Vehicle Detection Project

Cell 1: All the import statements needed for this project

In [1]:
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import numpy as np
import cv2
import glob
import time
from sklearn.svm import LinearSVC
from sklearn.preprocessing import StandardScaler
from skimage.feature import hog
from lesson_functions import *
# NOTE: the next import is only valid for scikit-learn version <= 0.17
# for scikit-learn >= 0.18 use:
from sklearn.model_selection import train_test_split
# from sklearn.cross_validation import train_test_split
import pickle

Cell 2: Util functions

In [2]:
def convert_color(img, conv='RGB2YCrCb'):
    if conv == 'RGB2YCrCb':
        return cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb)
    if conv == 'BGR2YCrCb':
        return cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
    if conv == 'RGB2LUV':
        return cv2.cvtColor(img, cv2.COLOR_RGB2LUV)
    if conv == 'RGB2YUV':
        return cv2.cvtColor(img, cv2.COLOR_RGB2YUV)


# Define a function to return HOG features and visualization
def get_hog_features(img, orient, pix_per_cell, cell_per_block,
                        vis=False, feature_vec=True):
    # Call with two outputs if vis==True
    if vis == True:
        features, hog_image = hog(img, orientations=orient,
                                  pixels_per_cell=(pix_per_cell, pix_per_cell),
                                  block_norm= 'L2-Hys',
                                  cells_per_block=(cell_per_block, cell_per_block),
                                  transform_sqrt=True,
                                  visualize=vis, feature_vector=feature_vec)
        return features, hog_image
    # Otherwise call with one output
    else:
        features = hog(img, orientations=orient,
                       pixels_per_cell=(pix_per_cell, pix_per_cell),
                       cells_per_block=(cell_per_block, cell_per_block),
                       block_norm= 'L2-Hys',
                       transform_sqrt=True,
                       visualize=vis, feature_vector=feature_vec)
        return features

# Define a function to compute binned color features
def bin_spatial(img, size=(32, 32)):
    # Use cv2.resize().ravel() to create the feature vector
    features = cv2.resize(img, size).ravel()
    # Return the feature vector
    return features

# Define a function to compute color histogram features
# NEED TO CHANGE bins_range if reading .png files with mpimg!
def color_hist(img, nbins=32, bins_range=(0, 256)):
    # Compute the histogram of the color channels separately
    channel1_hist = np.histogram(img[:,:,0], bins=nbins, range=bins_range)
    channel2_hist = np.histogram(img[:,:,1], bins=nbins, range=bins_range)
    channel3_hist = np.histogram(img[:,:,2], bins=nbins, range=bins_range)
    # Concatenate the histograms into a single feature vector
    hist_features = np.concatenate((channel1_hist[0], channel2_hist[0], channel3_hist[0]))
    # Return the individual histograms, bin_centers and feature vector
    return hist_features

# Define a function to extract features from a list of images
# Have this function call bin_spatial() and color_hist()
def extract_features(imgs, color_space='RGB', spatial_size=(32, 32),
                        hist_bins=32, orient=9,
                        pix_per_cell=8, cell_per_block=2, hog_channel=0,
                        spatial_feat=True, hist_feat=True, hog_feat=True):
    # Create a list to append feature vectors to
    features = []
    # Iterate through the list of images
    for file in imgs:
        file_features = []
        # Read in each one by one
        image = mpimg.imread(file)
        # apply color conversion if other than 'RGB'
        if color_space != 'RGB':
            if color_space == 'HSV':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
            elif color_space == 'LUV':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2LUV)
            elif color_space == 'HLS':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2HLS)
            elif color_space == 'YUV':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2YUV)
            elif color_space == 'YCrCb':
                feature_image = cv2.cvtColor(image, cv2.COLOR_RGB2YCrCb)
                
        else: 
            feature_image = np.copy(image)

        if spatial_feat == True:
            spatial_features = bin_spatial(feature_image, size=spatial_size)
            file_features.append(spatial_features)
        if hist_feat == True:
            # Apply color_hist()
            hist_features = color_hist(feature_image, nbins=hist_bins)
            file_features.append(hist_features)
        if hog_feat == True:
        # Call get_hog_features() with vis=False, feature_vec=True
            if hog_channel == 'ALL':
                hog_features = []
                for channel in range(feature_image.shape[2]):
                    hog_features.append(get_hog_features(feature_image[:,:,channel],
                                        orient, pix_per_cell, cell_per_block,
                                        vis=False, feature_vec=True))
                hog_features = np.ravel(hog_features)
            else:
                hog_features = get_hog_features(feature_image[:,:,hog_channel], orient,
                            pix_per_cell, cell_per_block, vis=False, feature_vec=True)
            # Append the new feature vector to the features list
            file_features.append(hog_features)
        features.append(np.concatenate(file_features))
    # Return list of feature vectors
    return features

# Define a function that takes an image,
# start and stop positions in both x and y,
# window size (x and y dimensions),
# and overlap fraction (for both x and y)
def slide_window(img, x_start_stop=[None, None], y_start_stop=[None, None],
                    xy_window=(64, 64), xy_overlap=(0.5, 0.5)):
    # If x and/or y start/stop positions not defined, set to image size
    if x_start_stop[0] == None:
        x_start_stop[0] = 0
    if x_start_stop[1] == None:
        x_start_stop[1] = img.shape[1]
    if y_start_stop[0] == None:
        y_start_stop[0] = 0
    if y_start_stop[1] == None:
        y_start_stop[1] = img.shape[0]
    # Compute the span of the region to be searched
    xspan = x_start_stop[1] - x_start_stop[0]
    yspan = y_start_stop[1] - y_start_stop[0]
    # Compute the number of pixels per step in x/y
    nx_pix_per_step = np.int(xy_window[0]*(1 - xy_overlap[0]))
    ny_pix_per_step = np.int(xy_window[1]*(1 - xy_overlap[1]))
    # Compute the number of windows in x/y
    nx_buffer = np.int(xy_window[0]*(xy_overlap[0]))
    ny_buffer = np.int(xy_window[1]*(xy_overlap[1]))
    nx_windows = np.int((xspan-nx_buffer)/nx_pix_per_step)
    ny_windows = np.int((yspan-ny_buffer)/ny_pix_per_step)
    # Initialize a list to append window positions to
    window_list = []
    # Loop through finding x and y window positions
    # Note: you could vectorize this step, but in practice
    # you'll be considering windows one by one with your
    # classifier, so looping makes sense
    for ys in range(ny_windows):
        for xs in range(nx_windows):
            # Calculate window position
            startx = xs*nx_pix_per_step + x_start_stop[0]
            endx = startx + xy_window[0]
            starty = ys*ny_pix_per_step + y_start_stop[0]
            endy = starty + xy_window[1]

            # Append window position to list
            window_list.append(((startx, starty), (endx, endy)))
    # Return the list of windows
    return window_list

# Define a function to draw bounding boxes
def draw_boxes(img, bboxes, color=(0, 0, 255), thick=6):
    # Make a copy of the image
    imcopy = np.copy(img)
    # Iterate through the bounding boxes
    for bbox in bboxes:
        # Draw a rectangle given bbox coordinates
        cv2.rectangle(imcopy, bbox[0], bbox[1], color, thick)
    # Return the image copy with boxes drawn
    return imcopy

Cell 3: Function to extract features of a single image window

In [3]:
# Define a function to extract features from a single image window
# This function is very similar to extract_features()
# just for a single image rather than list of images
def single_img_features(img, color_space='RGB', spatial_size=(32, 32),
                        hist_bins=32, orient=9,
                        pix_per_cell=8, cell_per_block=2, hog_channel=0,
                        spatial_feat=True, hist_feat=True, hog_feat=True):
    #1) Define an empty list to receive features
    img_features = []
    #2) Apply color conversion if other than 'RGB'
    if color_space != 'RGB':
        if color_space == 'HSV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
        elif color_space == 'LUV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2LUV)
        elif color_space == 'HLS':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2HLS)
        elif color_space == 'YUV':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2YUV)
        elif color_space == 'YCrCb':
            feature_image = cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb)
    else: feature_image = np.copy(img)
    #3) Compute spatial features if flag is set
    if spatial_feat == True:
        spatial_features = bin_spatial(feature_image, size=spatial_size)
        #4) Append features to list
        img_features.append(spatial_features)
    #5) Compute histogram features if flag is set
    if hist_feat == True:
        hist_features = color_hist(feature_image, nbins=hist_bins)
        #6) Append features to list
        img_features.append(hist_features)
    #7) Compute HOG features if flag is set
    if hog_feat == True:
        if hog_channel == 'ALL':
            hog_features = []
            for channel in range(feature_image.shape[2]):
                hog_features.extend(get_hog_features(feature_image[:,:,channel],
                                    orient, pix_per_cell, cell_per_block,
                                    vis=False, feature_vec=True))
        else:
            hog_features = get_hog_features(feature_image[:,:,hog_channel], orient,
                        pix_per_cell, cell_per_block, vis=False, feature_vec=True)
        #8) Append features to list
        img_features.append(hog_features)

    #9) Return concatenated array of features
    return np.concatenate(img_features)

Cell 5: Load images

In [4]:
# Read in cars and notcars
cars = []
notcars = []
car_images = glob.glob('vehicles/*/*.png')
for image in car_images:
    cars.append(image)
print(len(cars))

nocar_images = glob.glob('non-vehicles/*/*.png')
for image in nocar_images:
    notcars.append(image)
print(len(notcars))
# Reduce the sample size because
# The quiz evaluator times out after 13s of CPU time
sample_size = 8790
cars = cars[0:sample_size]
notcars = notcars[0:sample_size]
8792
8968

Data Example Plot

In [5]:
# Choose a random indices for plotting
car_idx = np.random.randint(0, len(cars))
notcar_idx = np.random.randint(0, len(notcars))

# Read car and non-car image
car_image = mpimg.imread(cars[car_idx])
notcar_image = mpimg.imread(notcars[notcar_idx])

# Plot an example of a vehicle and non-vehicle image 
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(8,8))
ax1.imshow(car_image)
ax1.set_title('Car Image', fontsize=15)
ax2.imshow(notcar_image)
ax2.set_title('Not Car Image', fontsize=15)
plt.savefig('output_images/car_and_notcar.png')

Data Example HOG

In [6]:
# Choose a random indices for plotting
car_idx = np.random.randint(0, len(cars))
notcar_idx = np.random.randint(0, len(notcars))

# Read car and non-car image
car_image = mpimg.imread(cars[car_idx])
notcar_image = mpimg.imread(notcars[notcar_idx])

gray_car = cv2.cvtColor(car_image, cv2.COLOR_RGB2GRAY)
gray_notcar = cv2.cvtColor(notcar_image, cv2.COLOR_RGB2GRAY)

orient = 12
pix_per_cell = 8
cell_per_block = 2

# Call our function with vis=True to see an image output
features_car, hog_image_car = get_hog_features(gray_car, orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
features_notcar, hog_image_notcar = get_hog_features(gray_notcar, orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
# Plot the examples
fig = plt.figure(figsize=(12,12))
plt.subplot(221)
plt.imshow(car_image, cmap='gray')
plt.title('Example Car Image')
plt.subplot(222)
plt.imshow(notcar_image, cmap='gray')
plt.title('Example Non-Car Image')

plt.subplot(223)
plt.imshow(hog_image_car, cmap='gray')
plt.title('HOG Example Car Image')
plt.subplot(224)
plt.imshow(hog_image_notcar, cmap='gray')
plt.title('HOG Example Non-Car Image')


plt.savefig('examples/hog.png')

Different Color Space for HOG

In [7]:
# YCrCb 
image = convert_color(car_image)
# Call our function with vis=True to see an image output per channel
_, hog_image_car_R = get_hog_features(image[:,:,0], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_G = get_hog_features(image[:,:,1], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_B = get_hog_features(image[:,:,2], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)

# YUV 
image = cv2.cvtColor(car_image, cv2.COLOR_RGB2YUV)
# Call our function with vis=True to see an image output per channel
_, hog_image_car_Y = get_hog_features(image[:,:,0], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_U = get_hog_features(image[:,:,1], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_V = get_hog_features(image[:,:,2], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)

# HLS
image = cv2.cvtColor(car_image, cv2.COLOR_RGB2HLS)
# Call our function with vis=True to see an image output per channel
_, hog_image_car_H = get_hog_features(image[:,:,0], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_L = get_hog_features(image[:,:,1], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_S = get_hog_features(image[:,:,2], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)

# Plot the examples
fig = plt.figure(figsize=(14,14))
plt.subplot(341)
plt.imshow(car_image, cmap='gray')
plt.title('Example Car Image')
plt.subplot(342)
plt.imshow(hog_image_car_R, cmap='gray')
plt.title('HOG Example Channel R')

plt.subplot(343)
plt.imshow(hog_image_car_G, cmap='gray')
plt.title('HOG Example Channel G')
plt.subplot(344)
plt.imshow(hog_image_car_B, cmap='gray')
plt.title('HOG Example Channel B')


plt.subplot(346)
plt.imshow(hog_image_car_Y, cmap='gray')
plt.title('HOG Example Channel Y')

plt.subplot(347)
plt.imshow(hog_image_car_U, cmap='gray')
plt.title('HOG Example Channel U')
plt.subplot(348)
plt.imshow(hog_image_car_V, cmap='gray')
plt.title('HOG Example Channel V')

plt.subplot(3,4,10)
plt.imshow(hog_image_car_H, cmap='gray')
plt.title('HOG Example Channel H')

plt.subplot(3,4,11)
plt.imshow(hog_image_car_L, cmap='gray')
plt.title('HOG Example Channel L')
plt.subplot(3,4,12)
plt.imshow(hog_image_car_S, cmap='gray')
plt.title('HOG Example Channel S')

plt.savefig('examples/hog2.png')

Different Parameters for HOG

In [8]:
# YCrCb 
image = convert_color(car_image)
# Parameter set 1
orient = 12
pix_per_cell = 8
cell_per_block = 2
# Call our function with vis=True to see an image output per channel
_, hog_image_car_A1 = get_hog_features(image[:,:,0], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_A2 = get_hog_features(image[:,:,1], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_A3 = get_hog_features(image[:,:,2], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)

# Parameter set 2
orient = 12
pix_per_cell = 8
cell_per_block = 4
# Call our function with vis=True to see an image output per channel
_, hog_image_car_B1 = get_hog_features(image[:,:,0], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_B2 = get_hog_features(image[:,:,1], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_B3 = get_hog_features(image[:,:,2], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)

# Parameter set 3
orient = 12
pix_per_cell = 4
cell_per_block = 2
# Call our function with vis=True to see an image output per channel
_, hog_image_car_C1 = get_hog_features(image[:,:,0], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_C2 = get_hog_features(image[:,:,1], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)
_, hog_image_car_C3 = get_hog_features(image[:,:,2], orient, 
                        pix_per_cell, cell_per_block, 
                        vis=True, feature_vec=False)

# Plot the examples
fig = plt.figure(figsize=(14,14))
plt.subplot(341)
plt.imshow(car_image, cmap='gray')
plt.title('Example Car Image')
plt.subplot(342)
plt.imshow(hog_image_car_A1, cmap='gray')
plt.title('HOG Example Channel 1')

plt.subplot(343)
plt.imshow(hog_image_car_A2, cmap='gray')
plt.title('HOG Example Channel 2')
plt.subplot(344)
plt.imshow(hog_image_car_A3, cmap='gray')
plt.title('HOG Example Channel 3')


plt.subplot(346)
plt.imshow(hog_image_car_B1, cmap='gray')
plt.title('HOG Example Channel 1')

plt.subplot(347)
plt.imshow(hog_image_car_B2, cmap='gray')
plt.title('HOG Example Channel 2')
plt.subplot(348)
plt.imshow(hog_image_car_B3, cmap='gray')
plt.title('HOG Example Channel 3')

plt.subplot(3,4,10)
plt.imshow(hog_image_car_C1, cmap='gray')
plt.title('HOG Example Channel 1')

plt.subplot(3,4,11)
plt.imshow(hog_image_car_C2, cmap='gray')
plt.title('HOG Example Channel 2')
plt.subplot(3,4,12)
plt.imshow(hog_image_car_C3, cmap='gray')
plt.title('HOG Example Channel 3')

plt.savefig('examples/hog3.png')

Cell 4: Search qualified windows in windows_list (need to calculate hog multiple times)

In [9]:
# Define a function you will pass an image
# and the list of windows to be searched (output of slide_windows())
def search_windows(img, windows, clf, scaler, color_space='RGB',
                    spatial_size=(32, 32), hist_bins=32,
                    hist_range=(0, 256), orient=9,
                    pix_per_cell=8, cell_per_block=2,
                    hog_channel=0, spatial_feat=True,
                    hist_feat=True, hog_feat=True):

    #1) Create an empty list to receive positive detection windows
    on_windows = []
    #2) Iterate over all windows in the list
    for window in windows:
        #3) Extract the test window from original image
        test_img = cv2.resize(img[window[0][1]:window[1][1], window[0][0]:window[1][0]], (64, 64))
        #4) Extract features for that window using single_img_features()
        features = single_img_features(test_img, color_space=color_space,
                            spatial_size=spatial_size, hist_bins=hist_bins,
                            orient=orient, pix_per_cell=pix_per_cell,
                            cell_per_block=cell_per_block,
                            hog_channel=hog_channel, spatial_feat=spatial_feat,
                            hist_feat=hist_feat, hog_feat=hog_feat)
        #5) Scale extracted features to be fed to classifier
        test_features = scaler.transform(np.array(features).reshape(1, -1))
        #6) Predict using your classifier
        prediction = clf.predict(test_features)
        #7) If positive (prediction == 1) then save the window
        if prediction == 1:
            on_windows.append(window)
    #8) Return windows for positive detections
    return on_windows
In [10]:
# Define a single function that can extract features using hog sub-sampling and make predictions
def find_cars(img,ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, cell_per_block, \
              spatial_size, hist_bins):
    #1) Create an empty list to receive positive detection windows
    on_windows = []
    draw_img = np.copy(img)
    img = img.astype(np.float32)/255
    
    img_tosearch = img[ystart:ystop,:,:]
    ctrans_tosearch = convert_color(img_tosearch, conv='RGB2YCrCb')
    if scale != 1:
        imshape = ctrans_tosearch.shape
        ctrans_tosearch = cv2.resize(ctrans_tosearch, (np.int(imshape[1]/scale), np.int(imshape[0]/scale)))
        
    ch1 = ctrans_tosearch[:,:,0]
    ch2 = ctrans_tosearch[:,:,1]
    ch3 = ctrans_tosearch[:,:,2]

    # Define blocks and steps as above   
    nxblocks = (ch1.shape[1] // pix_per_cell) - cell_per_block + 1
    nyblocks = (ch1.shape[0] // pix_per_cell) - cell_per_block + 1 
    nfeat_per_block = orient*cell_per_block**2
    
    # 64 was the orginal sampling rate, with 8 cells and 8 pix per cell
    window = 64
    nblocks_per_window = (window // pix_per_cell) - cell_per_block + 1
    cells_per_step = 2  # Instead of overlap, define how many cells to step
    nxsteps = (nxblocks - nblocks_per_window) // cells_per_step + 1
    nysteps = (nyblocks - nblocks_per_window) // cells_per_step + 1
    
    # Compute individual channel HOG features for the entire image
    hog1 = get_hog_features(ch1, orient, pix_per_cell, cell_per_block, feature_vec=False)
    hog2 = get_hog_features(ch2, orient, pix_per_cell, cell_per_block, feature_vec=False)
    hog3 = get_hog_features(ch3, orient, pix_per_cell, cell_per_block, feature_vec=False)
    
    for xb in range(nxsteps):
        for yb in range(nysteps):
            ypos = yb*cells_per_step
            xpos = xb*cells_per_step
            # Extract HOG for this patch
            hog_feat1 = hog1[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
            hog_feat2 = hog2[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
            hog_feat3 = hog3[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
            hog_features = np.hstack((hog_feat1, hog_feat2, hog_feat3))

            xleft = xpos*pix_per_cell
            ytop = ypos*pix_per_cell

            # Extract the image patch
            subimg = cv2.resize(ctrans_tosearch[ytop:ytop+window, xleft:xleft+window], (64,64))
          
            # Get color features
            spatial_features = bin_spatial(subimg, size=spatial_size)
            hist_features = color_hist(subimg, nbins=hist_bins)

            # Scale features and make a prediction
            test_features = X_scaler.transform(np.hstack((spatial_features, hist_features, hog_features)).reshape(1, -1))    
            #test_features = X_scaler.transform(np.hstack((shape_feat, hist_feat)).reshape(1, -1))    
            test_prediction = svc.predict(test_features)
            
            if test_prediction == 1:
                xbox_left = np.int(xleft*scale)
                ytop_draw = np.int(ytop*scale)
                win_draw = np.int(window*scale)
                on_window = ((xbox_left, ytop_draw+ystart), (xbox_left+win_draw,ytop_draw+win_draw+ystart))
                on_windows.append(on_window)
                cv2.rectangle(draw_img,(xbox_left, ytop_draw+ystart),(xbox_left+win_draw,ytop_draw+win_draw+ystart),(0,0,255),6) 
                
    return draw_img,on_windows

Cell 6: Parameters

In [11]:
### TODO: Tweak these parameters and see how the results change.
color_space = 'YCrCb' # Can be RGB, HSV, LUV, HLS, YUV, YCrCb
orient = 9  # HOG orientations
pix_per_cell = 8 # HOG pixels per cell
cell_per_block = 2 # HOG cells per block
hog_channel = "ALL" # Can be 0, 1, 2, or "ALL"
spatial_size = (32, 32) # Spatial binning dimensions
hist_bins = 32    # Number of histogram bins
spatial_feat = True # Spatial features on or off
hist_feat = True # Histogram features on or off
hog_feat = True # HOG features on or off
y_start_stop = [360, 650] # Min and max in y to search in slide_window()

Cell 7: Data preprocess

In [12]:
car_features = extract_features(cars, color_space=color_space,
                        spatial_size=spatial_size, hist_bins=hist_bins,
                        orient=orient, pix_per_cell=pix_per_cell,
                        cell_per_block=cell_per_block,
                        hog_channel=hog_channel, spatial_feat=spatial_feat,
                        hist_feat=hist_feat, hog_feat=hog_feat)
notcar_features = extract_features(notcars, color_space=color_space,
                        spatial_size=spatial_size, hist_bins=hist_bins,
                        orient=orient, pix_per_cell=pix_per_cell,
                        cell_per_block=cell_per_block,
                        hog_channel=hog_channel, spatial_feat=spatial_feat,
                        hist_feat=hist_feat, hog_feat=hog_feat)

# Create an array stack of feature vectors
X = np.vstack((car_features, notcar_features)).astype(np.float64)

# Define the labels vector
y = np.hstack((np.ones(len(car_features)), np.zeros(len(notcar_features))))

# Split up data into randomized training and test sets
rand_state = np.random.randint(0, 100)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.25, random_state=rand_state)

# Fit a per-column scaler
X_scaler = StandardScaler().fit(X_train)
# Apply the scaler to X
X_train = X_scaler.transform(X_train)
X_test = X_scaler.transform(X_test)

print('Using:',orient,'orientations',pix_per_cell,
    'pixels per cell and', cell_per_block,'cells per block')
print('Feature vector length:', len(X_train[0]))
Using: 9 orientations 8 pixels per cell and 2 cells per block
Feature vector length: 8460

Cell 8 : Training

In [21]:
# Use a linear SVC
svc = LinearSVC(C=0.1)
# Check the training time for the SVC
t=time.time()
svc.fit(X_train, y_train)
t2 = time.time()
print(round(t2-t, 2), 'Seconds to train SVC...')
# Check the score of the SVC
print('Test Accuracy of SVC = ', round(svc.score(X_test, y_test), 4))
# Check the prediction time for a single sample

pickle.dump( svc, open( "./svc_pickle.p", "wb" ) )
15.23 Seconds to train SVC...
Test Accuracy of SVC =  0.9916
/home/echo/miniconda3/envs/carnd-term1/lib/python3.5/site-packages/sklearn/svm/base.py:922: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)

Cell 8.1: Parameter Tuning

In [ ]:
from sklearn.model_selection import GridSearchCV
# Use a linear SVC
parameters = {'C':[0.01,0.1,0.5,1,5,10]}
svr = LinearSVC(max_iter=5000)
clf = GridSearchCV(svr, parameters,cv=5)
# Check the training time for the SVC
t=time.time()
clf.fit(X_train, y_train)
t2 = time.time()
print(round(t2-t, 2), 'Seconds to train SVC...')
# Check the score of the SVC
print('Test Accuracy of SVC = ', round(svc.score(X_test, y_test), 4))
# Best Parameter
print('Best C Value = ',clf.best_params_)
pickle.dump( svc, open( "./svc_pickle.p", "wb" ) )
In [22]:
image = mpimg.imread('test_images/test6.jpg')
draw_image = np.copy(image)
image_scaled = image.astype(np.float32)/255
t=time.time()
windows = slide_window(image_scaled, x_start_stop=[None, None], y_start_stop=y_start_stop,
                    xy_window=(96, 96), xy_overlap=(0.8, 0.8))

hot_windows = search_windows(image_scaled, windows, svc, X_scaler, color_space=color_space,
                        spatial_size=spatial_size, hist_bins=hist_bins,
                        orient=orient, pix_per_cell=pix_per_cell,
                        cell_per_block=cell_per_block,
                        hog_channel=hog_channel, spatial_feat=spatial_feat,
                        hist_feat=hist_feat, hog_feat=hog_feat)

window_img = draw_boxes(draw_image, hot_windows, color=(0, 0, 255), thick=6)
t2 = time.time()
print(round(t2-t, 2), 'Seconds to Search...')
plt.imshow(window_img)
plt.show()
3.21 Seconds to Search...
In [23]:
image = mpimg.imread('test_images/test6.jpg')
draw_image = np.copy(image)
ystart = y_start_stop[0]
ystop = y_start_stop[1]
scale = 1.5
t=time.time()
window_img, window_list = find_cars(image, ystart, ystop, scale, svc, X_scaler, orient, pix_per_cell, \
                                    cell_per_block, spatial_size, hist_bins)
t2 = time.time()
print(round(t2-t, 2), 'Seconds to Search...')
plt.imshow(window_img)
plt.show()
0.38 Seconds to Search...

Cell 9.3: Multiscale

In [85]:
def find_cars_multiscales(image, ystart, ystop, scale_list, svc, X_scaler, orient, pix_per_cell, \
                          cell_per_block, spatial_size, hist_bins):
    draw_img = np.copy(image)
        #1) Create an empty list to receive positive detection windows
    on_windows = []
    img = image.astype(np.float32)/255
    img_tosearch = img[ystart:ystop,:,:]
    ctrans_tosearch = convert_color(img_tosearch, conv='RGB2YCrCb')
    for scale in scale_list:
        if scale != 1:
            imshape = ctrans_tosearch.shape
            ctrans_tosearch_scaled = cv2.resize(ctrans_tosearch, (np.int(imshape[1]/scale), \
                                                                  np.int(imshape[0]/scale)))
        else:
            ctrans_tosearch_scaled = np.copy(ctrans_tosearch)

        ch1 = ctrans_tosearch_scaled[:,:,0]
        ch2 = ctrans_tosearch_scaled[:,:,1]
        ch3 = ctrans_tosearch_scaled[:,:,2]

        # Define blocks and steps as above
        nxblocks = (ch1.shape[1] // pix_per_cell) - cell_per_block + 1
        nyblocks = (ch1.shape[0] // pix_per_cell) - cell_per_block + 1 
        nfeat_per_block = orient*cell_per_block**2

        # 64 was the orginal sampling rate, with 8 cells and 8 pix per cell
        window = 64
        nblocks_per_window = (window // pix_per_cell) - cell_per_block + 1
        cells_per_step = 2  # Instead of overlap, define how many cells to step
        nxsteps = (nxblocks - nblocks_per_window) // cells_per_step + 1
        nysteps = (nyblocks - nblocks_per_window) // cells_per_step + 1

        # Compute individual channel HOG features for the entire image
        hog1 = get_hog_features(ch1, orient, pix_per_cell, cell_per_block, feature_vec=False)
        hog2 = get_hog_features(ch2, orient, pix_per_cell, cell_per_block, feature_vec=False)
        hog3 = get_hog_features(ch3, orient, pix_per_cell, cell_per_block, feature_vec=False)

        for xb in range(nxsteps):
            for yb in range(nysteps):
                ypos = yb*cells_per_step
                xpos = xb*cells_per_step
                # Extract HOG for this patch
                hog_feat1 = hog1[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
                hog_feat2 = hog2[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
                hog_feat3 = hog3[ypos:ypos+nblocks_per_window, xpos:xpos+nblocks_per_window].ravel() 
                hog_features = np.hstack((hog_feat1, hog_feat2, hog_feat3))

                xleft = xpos*pix_per_cell
                ytop = ypos*pix_per_cell

                # Extract the image patch
                subimg = cv2.resize(ctrans_tosearch_scaled[ytop:ytop+window, xleft:xleft+window], (64,64))

                # Get color features
                spatial_features = bin_spatial(subimg, size=spatial_size)
                hist_features = color_hist(subimg, nbins=hist_bins)

                # Scale features and make a prediction
                test_features = X_scaler.transform(np.hstack((spatial_features, hist_features, hog_features)).reshape(1, -1))    
                #test_features = X_scaler.transform(np.hstack((shape_feat, hist_feat)).reshape(1, -1))    
                test_prediction = svc.predict(test_features)

                if test_prediction == 1:
                    xbox_left = np.int(xleft*scale)
                    ytop_draw = np.int(ytop*scale)
                    win_draw = np.int(window*scale)
                    on_window = ((xbox_left, ytop_draw+ystart), (xbox_left+win_draw,ytop_draw+win_draw+ystart))
                    on_windows.append(on_window)
                    cv2.rectangle(draw_img,(xbox_left, ytop_draw+ystart),(xbox_left+win_draw,ytop_draw+\
                                                                          win_draw+ystart),(0,0,255),6) 
    return draw_img,on_windows

test_images_path = glob.glob('test_images/test*.jpg')
test_images = []
for test_image_path in test_images_path:
    test_image = mpimg.imread(test_image_path)
    test_images.append(test_image)
    
ystart = y_start_stop[0]
ystop = y_start_stop[1]
scale = [1,1.5,2]

window_img1, window_list1 = find_cars_multiscales(test_images[0], ystart, ystop, scale, svc, \
                                                  X_scaler, orient, pix_per_cell, cell_per_block, \
                                                  spatial_size, hist_bins)
window_img2, window_list2 = find_cars_multiscales(test_images[1], ystart, ystop, scale, svc, \
                                                  X_scaler, orient, pix_per_cell, cell_per_block, \
                                                  spatial_size, hist_bins)
window_img3, window_list3 = find_cars_multiscales(test_images[2], ystart, ystop, scale, svc, \
                                                  X_scaler, orient, pix_per_cell, cell_per_block, \
                                                  spatial_size, hist_bins)
window_img4, window_list4 = find_cars_multiscales(test_images[3], ystart, ystop, scale, svc, \
                                                  X_scaler, orient, pix_per_cell, cell_per_block, \
                                                  spatial_size, hist_bins)
window_img5, window_list5 = find_cars_multiscales(test_images[4], ystart, ystop, scale, svc, \
                                                  X_scaler, orient, pix_per_cell, cell_per_block, \
                                                  spatial_size, hist_bins)
window_img6, window_list6 = find_cars_multiscales(test_images[5], ystart, ystop, scale, svc, \
                                                  X_scaler, orient, pix_per_cell, cell_per_block, \
                                                  spatial_size, hist_bins)

# Plot the examples
fig = plt.figure(figsize=(18,18))
plt.subplot(321)
plt.imshow(window_img1, cmap='gray')
plt.subplot(322)
plt.imshow(window_img2, cmap='gray')

plt.subplot(323)
plt.imshow(window_img3, cmap='gray')
plt.subplot(324)
plt.imshow(window_img4, cmap='gray')

plt.subplot(325)
plt.imshow(window_img5, cmap='gray')
plt.subplot(326)
plt.imshow(window_img6, cmap='gray')

plt.savefig('examples/detecttest_1.png')

Cell 10: Multiple Detections & False Positives

In [86]:
from scipy.ndimage.measurements import label
def add_heat(heatmap, bbox_list):
    # Iterate through list of bboxes
    for box in bbox_list:
        # Add += 1 for all pixels inside each bbox
        # Assuming each "box" takes the form ((x1, y1), (x2, y2))
        heatmap[box[0][1]:box[1][1], box[0][0]:box[1][0]] += 1

    # Return updated heatmap
    return heatmap# Iterate through list of bboxes
    
def apply_threshold(heatmap, threshold):
    # Zero out pixels below the threshold
    heatmap[heatmap <= threshold] = 0
    # Return thresholded map
    return heatmap

def draw_labeled_bboxes(img, labels):
    # Iterate through all detected cars
    for car_number in range(1, labels[1]+1):
        # Find pixels with each car_number label value
        nonzero = (labels[0] == car_number).nonzero()
        # Identify x and y values of those pixels
        nonzeroy = np.array(nonzero[0])
        nonzerox = np.array(nonzero[1])
        # Define a bounding box based on min/max x and y
        bbox = ((np.min(nonzerox), np.min(nonzeroy)), (np.max(nonzerox), np.max(nonzeroy)))
        # Draw the box on the image
        cv2.rectangle(img, bbox[0], bbox[1], (0,0,255), 6)
    # Return the image
    return img
In [92]:
heat = np.zeros_like(image[:,:,0]).astype(np.float)
# Add heat to each box in box list
heat = add_heat(heat,window_list)
    
# Apply threshold to help remove false positives
heat = apply_threshold(heat,2)

# Visualize the heatmap when displaying    
heatmap = np.clip(heat, 0, 255)

# Find final boxes from heatmap using label function
labels = label(heatmap)
draw_img = draw_labeled_bboxes(np.copy(image), labels)

fig = plt.figure(figsize=(14,14))
plt.subplot(121)
plt.imshow(draw_img)
plt.title('Car Positions')
plt.subplot(122)
plt.imshow(heatmap, cmap='hot')
plt.title('Heat Map')
fig.tight_layout()
plt.savefig('examples/heatmap.png')

Cell 11: Video Pipeline

In [93]:
def pipeline(image,svc,X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins,\
             ystart,ystop,scale_list = [1,2]):
    draw_image = np.copy(image)
    
    window_img, window_list = find_cars_multiscales(image, ystart, ystop, scale_list, svc, X_scaler, \
                                                    orient, pix_per_cell, cell_per_block, spatial_size, hist_bins)
    heat = np.zeros_like(image[:,:,0]).astype(np.float)
    # Add heat to each box in box list
    heat = add_heat(heat,window_list)

    # Apply threshold to help remove false positives
    heat = apply_threshold(heat,2)

    # Visualize the heatmap when displaying    
    heatmap = np.clip(heat, 0, 255)
    # Find final boxes from heatmap using label function
    labels = label(heatmap)
    draw_img = draw_labeled_bboxes(np.copy(image), labels)
    return draw_img
In [94]:
test_images_path = glob.glob('test_images/test*.jpg')
test_images = []
for test_image_path in test_images_path:
    test_image = mpimg.imread(test_image_path)
    test_images.append(test_image)

image1 = test_images[0]
image_draw1 = pipeline(image1,svc,X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, \
                       hist_bins,ystart,ystop,scale_list = scale)
image2 = test_images[1]
image_draw2 = pipeline(image2,svc,X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, \
                       hist_bins,ystart,ystop,scale_list = scale)
image3 = test_images[2]
image_draw3 = pipeline(image3,svc,X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, \
                       hist_bins,ystart,ystop,scale_list = scale)
image4 = test_images[3]
image_draw4 = pipeline(image4,svc,X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, \
                       hist_bins,ystart,ystop,scale_list = scale)
image5 = test_images[4]
image_draw5 = pipeline(image5,svc,X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, \
                       hist_bins,ystart,ystop,scale_list = scale)
image6 = test_images[5]
image_draw6 = pipeline(image6,svc,X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, \
                       hist_bins,ystart,ystop,scale_list = scale)
In [95]:
# Plot the examples
fig = plt.figure(figsize=(18,18))
plt.subplot(321)
plt.imshow(image_draw1, cmap='gray')
plt.subplot(322)
plt.imshow(image_draw2, cmap='gray')

plt.subplot(323)
plt.imshow(image_draw3, cmap='gray')
plt.subplot(324)
plt.imshow(image_draw4, cmap='gray')

plt.subplot(325)
plt.imshow(image_draw5, cmap='gray')
plt.subplot(326)
plt.imshow(image_draw6, cmap='gray')

plt.savefig('examples/detecttest.png')
In [96]:
from moviepy.editor import VideoFileClip

def VideoPipeline(inputVideo, outputVideo,svc,X_scaler, orient, pix_per_cell, cell_per_block, \
                  spatial_size, hist_bins,ystart,ystop,scale_list):
    myclip = VideoFileClip(inputVideo)
    clip = myclip.fl_image(lambda image: pipeline(image,svc,X_scaler, orient, pix_per_cell, \
                                                  cell_per_block, spatial_size, hist_bins,ystart,ystop,scale_list))
    clip.write_videofile(outputVideo, audio=False)
    
VideoPipeline('test_video.mp4', 'test_video_result.mp4',svc,X_scaler, orient, pix_per_cell, \
              cell_per_block, spatial_size, hist_bins,ystart,ystop,scale_list = scale)
[MoviePy] >>>> Building video test_video_result.mp4
[MoviePy] Writing video test_video_result.mp4



  0%|          | 0/39 [00:00<?, ?it/s]



  3%|▎         | 1/39 [00:01<00:57,  1.50s/it]



  5%|▌         | 2/39 [00:03<00:55,  1.51s/it]



  8%|▊         | 3/39 [00:04<00:54,  1.50s/it]



 10%|█         | 4/39 [00:05<00:52,  1.49s/it]



 13%|█▎        | 5/39 [00:07<00:50,  1.49s/it]



 15%|█▌        | 6/39 [00:08<00:48,  1.48s/it]



 18%|█▊        | 7/39 [00:10<00:47,  1.47s/it]



 21%|██        | 8/39 [00:11<00:45,  1.47s/it]



 23%|██▎       | 9/39 [00:13<00:44,  1.47s/it]



 26%|██▌       | 10/39 [00:14<00:42,  1.48s/it]



 28%|██▊       | 11/39 [00:16<00:41,  1.50s/it]



 31%|███       | 12/39 [00:17<00:40,  1.51s/it]



 33%|███▎      | 13/39 [00:19<00:39,  1.52s/it]



 36%|███▌      | 14/39 [00:20<00:37,  1.50s/it]



 38%|███▊      | 15/39 [00:22<00:35,  1.49s/it]



 41%|████      | 16/39 [00:23<00:34,  1.49s/it]



 44%|████▎     | 17/39 [00:25<00:32,  1.49s/it]



 46%|████▌     | 18/39 [00:26<00:31,  1.48s/it]



 49%|████▊     | 19/39 [00:28<00:29,  1.48s/it]



 51%|█████▏    | 20/39 [00:29<00:27,  1.47s/it]



 54%|█████▍    | 21/39 [00:31<00:26,  1.46s/it]



 56%|█████▋    | 22/39 [00:32<00:24,  1.46s/it]



 59%|█████▉    | 23/39 [00:34<00:23,  1.47s/it]



 62%|██████▏   | 24/39 [00:35<00:22,  1.49s/it]



 64%|██████▍   | 25/39 [00:37<00:20,  1.50s/it]



 67%|██████▋   | 26/39 [00:38<00:19,  1.51s/it]



 69%|██████▉   | 27/39 [00:40<00:18,  1.52s/it]



 72%|███████▏  | 28/39 [00:41<00:16,  1.52s/it]



 74%|███████▍  | 29/39 [00:43<00:15,  1.52s/it]



 77%|███████▋  | 30/39 [00:44<00:13,  1.52s/it]



 79%|███████▉  | 31/39 [00:46<00:11,  1.50s/it]



 82%|████████▏ | 32/39 [00:47<00:10,  1.50s/it]



 85%|████████▍ | 33/39 [00:49<00:09,  1.50s/it]



 87%|████████▋ | 34/39 [00:50<00:07,  1.50s/it]



 90%|████████▉ | 35/39 [00:52<00:05,  1.50s/it]



 92%|█████████▏| 36/39 [00:53<00:04,  1.50s/it]



 95%|█████████▍| 37/39 [00:55<00:03,  1.51s/it]



 97%|█████████▋| 38/39 [00:56<00:01,  1.51s/it]



[MoviePy] Done.
[MoviePy] >>>> Video ready: test_video_result.mp4 

In [97]:
VideoPipeline('project_video.mp4', 'project_video_result.mp4',svc,X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins,ystart,ystop,scale_list = scale)
[MoviePy] >>>> Building video project_video_result.mp4
[MoviePy] Writing video project_video_result.mp4



  0%|          | 0/1261 [00:00<?, ?it/s]



  0%|          | 1/1261 [00:01<31:34,  1.50s/it]



  0%|          | 2/1261 [00:02<31:25,  1.50s/it]



  0%|          | 3/1261 [00:04<31:23,  1.50s/it]



  0%|          | 4/1261 [00:06<31:32,  1.51s/it]



  0%|          | 5/1261 [00:07<31:40,  1.51s/it]



  0%|          | 6/1261 [00:09<31:44,  1.52s/it]



  1%|          | 7/1261 [00:10<31:36,  1.51s/it]



  1%|          | 8/1261 [00:12<31:41,  1.52s/it]



  1%|          | 9/1261 [00:13<31:39,  1.52s/it]



  1%|          | 10/1261 [00:15<31:27,  1.51s/it]



  1%|          | 11/1261 [00:16<31:23,  1.51s/it]



  1%|          | 12/1261 [00:18<31:23,  1.51s/it]



  1%|          | 13/1261 [00:19<31:19,  1.51s/it]



  1%|          | 14/1261 [00:21<31:21,  1.51s/it]



  1%|          | 15/1261 [00:22<31:17,  1.51s/it]



  1%|▏         | 16/1261 [00:24<31:16,  1.51s/it]



  1%|▏         | 17/1261 [00:25<31:23,  1.51s/it]



  1%|▏         | 18/1261 [00:27<31:31,  1.52s/it]



  2%|▏         | 19/1261 [00:28<31:28,  1.52s/it]



  2%|▏         | 20/1261 [00:30<31:24,  1.52s/it]



  2%|▏         | 21/1261 [00:31<31:15,  1.51s/it]



  2%|▏         | 22/1261 [00:33<31:14,  1.51s/it]



  2%|▏         | 23/1261 [00:34<31:10,  1.51s/it]



  2%|▏         | 24/1261 [00:36<30:52,  1.50s/it]



  2%|▏         | 25/1261 [00:37<30:37,  1.49s/it]



  2%|▏         | 26/1261 [00:39<30:36,  1.49s/it]



  2%|▏         | 27/1261 [00:40<30:31,  1.48s/it]



  2%|▏         | 28/1261 [00:42<30:45,  1.50s/it]



  2%|▏         | 29/1261 [00:43<31:01,  1.51s/it]



  2%|▏         | 30/1261 [00:45<30:57,  1.51s/it]



  2%|▏         | 31/1261 [00:46<30:55,  1.51s/it]



  3%|▎         | 32/1261 [00:48<30:54,  1.51s/it]



  3%|▎         | 33/1261 [00:49<30:45,  1.50s/it]



  3%|▎         | 34/1261 [00:51<30:34,  1.50s/it]



  3%|▎         | 35/1261 [00:52<30:25,  1.49s/it]



  3%|▎         | 36/1261 [00:54<30:19,  1.49s/it]



  3%|▎         | 37/1261 [00:55<30:17,  1.48s/it]



  3%|▎         | 38/1261 [00:57<30:08,  1.48s/it]



  3%|▎         | 39/1261 [00:58<30:10,  1.48s/it]



  3%|▎         | 40/1261 [01:00<30:10,  1.48s/it]



  3%|▎         | 41/1261 [01:01<30:06,  1.48s/it]



  3%|▎         | 42/1261 [01:03<30:08,  1.48s/it]



  3%|▎         | 43/1261 [01:04<30:02,  1.48s/it]



  3%|▎         | 44/1261 [01:06<30:09,  1.49s/it]



  4%|▎         | 45/1261 [01:07<30:09,  1.49s/it]



  4%|▎         | 46/1261 [01:09<30:12,  1.49s/it]



  4%|▎         | 47/1261 [01:10<30:11,  1.49s/it]



  4%|▍         | 48/1261 [01:12<30:10,  1.49s/it]



  4%|▍         | 49/1261 [01:13<30:07,  1.49s/it]



  4%|▍         | 50/1261 [01:15<30:14,  1.50s/it]



  4%|▍         | 51/1261 [01:16<30:29,  1.51s/it]



  4%|▍         | 52/1261 [01:18<30:29,  1.51s/it]



  4%|▍         | 53/1261 [01:19<30:25,  1.51s/it]



  4%|▍         | 54/1261 [01:21<30:23,  1.51s/it]



  4%|▍         | 55/1261 [01:22<30:23,  1.51s/it]



  4%|▍         | 56/1261 [01:24<30:27,  1.52s/it]



  5%|▍         | 57/1261 [01:25<30:25,  1.52s/it]



  5%|▍         | 58/1261 [01:27<30:19,  1.51s/it]



  5%|▍         | 59/1261 [01:28<30:15,  1.51s/it]



  5%|▍         | 60/1261 [01:30<30:16,  1.51s/it]



  5%|▍         | 61/1261 [01:31<30:16,  1.51s/it]



  5%|▍         | 62/1261 [01:33<30:16,  1.51s/it]



  5%|▍         | 63/1261 [01:34<30:07,  1.51s/it]



  5%|▌         | 64/1261 [01:36<29:51,  1.50s/it]



  5%|▌         | 65/1261 [01:37<29:55,  1.50s/it]



  5%|▌         | 66/1261 [01:39<29:52,  1.50s/it]



  5%|▌         | 67/1261 [01:40<29:51,  1.50s/it]



  5%|▌         | 68/1261 [01:42<29:45,  1.50s/it]



  5%|▌         | 69/1261 [01:43<29:44,  1.50s/it]



  6%|▌         | 70/1261 [01:45<29:48,  1.50s/it]



  6%|▌         | 71/1261 [01:46<29:37,  1.49s/it]



  6%|▌         | 72/1261 [01:48<29:29,  1.49s/it]



  6%|▌         | 73/1261 [01:49<29:33,  1.49s/it]



  6%|▌         | 74/1261 [01:51<29:42,  1.50s/it]



  6%|▌         | 75/1261 [01:52<29:37,  1.50s/it]



  6%|▌         | 76/1261 [01:54<29:40,  1.50s/it]



  6%|▌         | 77/1261 [01:55<29:36,  1.50s/it]



  6%|▌         | 78/1261 [01:57<29:31,  1.50s/it]



  6%|▋         | 79/1261 [01:58<29:24,  1.49s/it]



  6%|▋         | 80/1261 [02:00<29:19,  1.49s/it]



  6%|▋         | 81/1261 [02:01<29:30,  1.50s/it]



  7%|▋         | 82/1261 [02:03<29:31,  1.50s/it]



  7%|▋         | 83/1261 [02:04<29:23,  1.50s/it]



  7%|▋         | 84/1261 [02:06<29:33,  1.51s/it]



  7%|▋         | 85/1261 [02:07<29:36,  1.51s/it]



  7%|▋         | 86/1261 [02:09<29:20,  1.50s/it]



  7%|▋         | 87/1261 [02:10<29:16,  1.50s/it]



  7%|▋         | 88/1261 [02:12<29:27,  1.51s/it]



  7%|▋         | 89/1261 [02:13<29:38,  1.52s/it]



  7%|▋         | 90/1261 [02:15<29:43,  1.52s/it]



  7%|▋         | 91/1261 [02:16<29:42,  1.52s/it]



  7%|▋         | 92/1261 [02:18<29:47,  1.53s/it]



  7%|▋         | 93/1261 [02:19<29:37,  1.52s/it]



  7%|▋         | 94/1261 [02:21<29:26,  1.51s/it]



  8%|▊         | 95/1261 [02:22<29:35,  1.52s/it]



  8%|▊         | 96/1261 [02:24<29:33,  1.52s/it]



  8%|▊         | 97/1261 [02:25<29:37,  1.53s/it]



  8%|▊         | 98/1261 [02:27<29:31,  1.52s/it]



  8%|▊         | 99/1261 [02:28<29:16,  1.51s/it]



  8%|▊         | 100/1261 [02:30<29:16,  1.51s/it]



  8%|▊         | 101/1261 [02:31<29:05,  1.50s/it]



  8%|▊         | 102/1261 [02:33<29:05,  1.51s/it]



  8%|▊         | 103/1261 [02:34<29:01,  1.50s/it]



  8%|▊         | 104/1261 [02:36<29:01,  1.50s/it]



  8%|▊         | 105/1261 [02:37<29:13,  1.52s/it]



  8%|▊         | 106/1261 [02:39<29:14,  1.52s/it]



  8%|▊         | 107/1261 [02:41<29:12,  1.52s/it]



  9%|▊         | 108/1261 [02:42<29:01,  1.51s/it]



  9%|▊         | 109/1261 [02:44<28:58,  1.51s/it]



  9%|▊         | 110/1261 [02:45<28:53,  1.51s/it]



  9%|▉         | 111/1261 [02:47<28:49,  1.50s/it]



  9%|▉         | 112/1261 [02:48<28:50,  1.51s/it]



  9%|▉         | 113/1261 [02:50<28:57,  1.51s/it]



  9%|▉         | 114/1261 [02:51<28:33,  1.49s/it]



  9%|▉         | 115/1261 [02:53<28:44,  1.51s/it]



  9%|▉         | 116/1261 [02:54<28:54,  1.52s/it]



  9%|▉         | 117/1261 [02:56<28:56,  1.52s/it]



  9%|▉         | 118/1261 [02:57<28:42,  1.51s/it]



  9%|▉         | 119/1261 [02:59<28:18,  1.49s/it]



 10%|▉         | 120/1261 [03:00<28:15,  1.49s/it]



 10%|▉         | 121/1261 [03:01<28:18,  1.49s/it]



 10%|▉         | 122/1261 [03:03<28:22,  1.49s/it]



 10%|▉         | 123/1261 [03:04<28:21,  1.49s/it]



 10%|▉         | 124/1261 [03:06<28:27,  1.50s/it]



 10%|▉         | 125/1261 [03:08<28:29,  1.51s/it]



 10%|▉         | 126/1261 [03:09<28:23,  1.50s/it]



 10%|█         | 127/1261 [03:11<28:25,  1.50s/it]



 10%|█         | 128/1261 [03:12<28:14,  1.50s/it]



 10%|█         | 129/1261 [03:14<28:12,  1.50s/it]



 10%|█         | 130/1261 [03:15<28:12,  1.50s/it]



 10%|█         | 131/1261 [03:17<28:13,  1.50s/it]



 10%|█         | 132/1261 [03:18<28:24,  1.51s/it]



 11%|█         | 133/1261 [03:20<28:28,  1.51s/it]



 11%|█         | 134/1261 [03:21<28:05,  1.50s/it]



 11%|█         | 135/1261 [03:23<28:00,  1.49s/it]



 11%|█         | 136/1261 [03:24<28:00,  1.49s/it]



 11%|█         | 137/1261 [03:26<28:06,  1.50s/it]



 11%|█         | 138/1261 [03:27<27:55,  1.49s/it]



 11%|█         | 139/1261 [03:28<27:48,  1.49s/it]



 11%|█         | 140/1261 [03:30<27:51,  1.49s/it]



 11%|█         | 141/1261 [03:31<27:49,  1.49s/it]



 11%|█▏        | 142/1261 [03:33<27:45,  1.49s/it]



 11%|█▏        | 143/1261 [03:34<27:44,  1.49s/it]



 11%|█▏        | 144/1261 [03:36<27:43,  1.49s/it]



 11%|█▏        | 145/1261 [03:37<27:30,  1.48s/it]



 12%|█▏        | 146/1261 [03:39<27:35,  1.48s/it]



 12%|█▏        | 147/1261 [03:40<27:29,  1.48s/it]



 12%|█▏        | 148/1261 [03:42<27:34,  1.49s/it]



 12%|█▏        | 149/1261 [03:43<27:29,  1.48s/it]



 12%|█▏        | 150/1261 [03:45<27:44,  1.50s/it]



 12%|█▏        | 151/1261 [03:46<27:39,  1.50s/it]



 12%|█▏        | 152/1261 [03:48<27:39,  1.50s/it]



 12%|█▏        | 153/1261 [03:49<27:30,  1.49s/it]



 12%|█▏        | 154/1261 [03:51<27:29,  1.49s/it]



 12%|█▏        | 155/1261 [03:52<27:35,  1.50s/it]



 12%|█▏        | 156/1261 [03:54<27:35,  1.50s/it]



 12%|█▏        | 157/1261 [03:55<27:28,  1.49s/it]



 13%|█▎        | 158/1261 [03:57<27:22,  1.49s/it]



 13%|█▎        | 159/1261 [03:58<27:31,  1.50s/it]



 13%|█▎        | 160/1261 [04:00<27:46,  1.51s/it]



 13%|█▎        | 161/1261 [04:01<27:51,  1.52s/it]



 13%|█▎        | 162/1261 [04:03<27:54,  1.52s/it]



 13%|█▎        | 163/1261 [04:04<27:35,  1.51s/it]



 13%|█▎        | 164/1261 [04:06<27:12,  1.49s/it]



 13%|█▎        | 165/1261 [04:07<26:53,  1.47s/it]



 13%|█▎        | 166/1261 [04:09<26:54,  1.47s/it]



 13%|█▎        | 167/1261 [04:10<26:49,  1.47s/it]



 13%|█▎        | 168/1261 [04:12<26:48,  1.47s/it]



 13%|█▎        | 169/1261 [04:13<26:50,  1.47s/it]



 13%|█▎        | 170/1261 [04:15<26:52,  1.48s/it]



 14%|█▎        | 171/1261 [04:16<26:50,  1.48s/it]



 14%|█▎        | 172/1261 [04:18<27:02,  1.49s/it]



 14%|█▎        | 173/1261 [04:19<27:00,  1.49s/it]



 14%|█▍        | 174/1261 [04:21<26:59,  1.49s/it]



 14%|█▍        | 175/1261 [04:22<27:13,  1.50s/it]



 14%|█▍        | 176/1261 [04:24<27:17,  1.51s/it]



 14%|█▍        | 177/1261 [04:25<27:10,  1.50s/it]



 14%|█▍        | 178/1261 [04:27<27:05,  1.50s/it]



 14%|█▍        | 179/1261 [04:28<26:55,  1.49s/it]



 14%|█▍        | 180/1261 [04:30<27:03,  1.50s/it]



 14%|█▍        | 181/1261 [04:31<27:05,  1.51s/it]



 14%|█▍        | 182/1261 [04:33<26:54,  1.50s/it]



 15%|█▍        | 183/1261 [04:34<26:42,  1.49s/it]



 15%|█▍        | 184/1261 [04:36<26:33,  1.48s/it]



 15%|█▍        | 185/1261 [04:37<26:27,  1.48s/it]



 15%|█▍        | 186/1261 [04:39<26:32,  1.48s/it]



 15%|█▍        | 187/1261 [04:40<26:35,  1.49s/it]



 15%|█▍        | 188/1261 [04:42<26:33,  1.49s/it]



 15%|█▍        | 189/1261 [04:43<26:32,  1.49s/it]



 15%|█▌        | 190/1261 [04:44<26:29,  1.48s/it]



 15%|█▌        | 191/1261 [04:46<26:21,  1.48s/it]



 15%|█▌        | 192/1261 [04:47<26:10,  1.47s/it]



 15%|█▌        | 193/1261 [04:49<26:13,  1.47s/it]



 15%|█▌        | 194/1261 [04:50<26:13,  1.47s/it]



 15%|█▌        | 195/1261 [04:52<26:17,  1.48s/it]



 16%|█▌        | 196/1261 [04:53<26:18,  1.48s/it]



 16%|█▌        | 197/1261 [04:55<26:18,  1.48s/it]



 16%|█▌        | 198/1261 [04:56<26:17,  1.48s/it]



 16%|█▌        | 199/1261 [04:58<26:02,  1.47s/it]



 16%|█▌        | 200/1261 [04:59<25:52,  1.46s/it]



 16%|█▌        | 201/1261 [05:01<25:59,  1.47s/it]



 16%|█▌        | 202/1261 [05:02<25:51,  1.47s/it]



 16%|█▌        | 203/1261 [05:04<25:49,  1.46s/it]



 16%|█▌        | 204/1261 [05:05<25:49,  1.47s/it]



 16%|█▋        | 205/1261 [05:07<25:52,  1.47s/it]



 16%|█▋        | 206/1261 [05:08<25:58,  1.48s/it]



 16%|█▋        | 207/1261 [05:10<26:11,  1.49s/it]



 16%|█▋        | 208/1261 [05:11<26:20,  1.50s/it]



 17%|█▋        | 209/1261 [05:13<26:17,  1.50s/it]



 17%|█▋        | 210/1261 [05:14<26:27,  1.51s/it]



 17%|█▋        | 211/1261 [05:16<26:26,  1.51s/it]



 17%|█▋        | 212/1261 [05:17<26:25,  1.51s/it]



 17%|█▋        | 213/1261 [05:19<26:22,  1.51s/it]



 17%|█▋        | 214/1261 [05:20<26:15,  1.50s/it]



 17%|█▋        | 215/1261 [05:22<26:19,  1.51s/it]



 17%|█▋        | 216/1261 [05:23<26:13,  1.51s/it]



 17%|█▋        | 217/1261 [05:25<25:58,  1.49s/it]



 17%|█▋        | 218/1261 [05:26<25:54,  1.49s/it]



 17%|█▋        | 219/1261 [05:28<25:48,  1.49s/it]



 17%|█▋        | 220/1261 [05:29<25:47,  1.49s/it]



 18%|█▊        | 221/1261 [05:31<25:45,  1.49s/it]



 18%|█▊        | 222/1261 [05:32<25:39,  1.48s/it]



 18%|█▊        | 223/1261 [05:33<25:29,  1.47s/it]



 18%|█▊        | 224/1261 [05:35<25:34,  1.48s/it]



 18%|█▊        | 225/1261 [05:37<25:48,  1.50s/it]



 18%|█▊        | 226/1261 [05:38<25:58,  1.51s/it]



 18%|█▊        | 227/1261 [05:40<26:10,  1.52s/it]



 18%|█▊        | 228/1261 [05:41<26:12,  1.52s/it]



 18%|█▊        | 229/1261 [05:43<26:04,  1.52s/it]



 18%|█▊        | 230/1261 [05:44<25:57,  1.51s/it]



 18%|█▊        | 231/1261 [05:46<25:49,  1.50s/it]



 18%|█▊        | 232/1261 [05:47<25:39,  1.50s/it]



 18%|█▊        | 233/1261 [05:49<25:39,  1.50s/it]



 19%|█▊        | 234/1261 [05:50<25:28,  1.49s/it]



 19%|█▊        | 235/1261 [05:52<25:27,  1.49s/it]



 19%|█▊        | 236/1261 [05:53<25:20,  1.48s/it]



 19%|█▉        | 237/1261 [05:55<25:20,  1.48s/it]



 19%|█▉        | 238/1261 [05:56<25:20,  1.49s/it]



 19%|█▉        | 239/1261 [05:57<25:20,  1.49s/it]



 19%|█▉        | 240/1261 [05:59<25:20,  1.49s/it]



 19%|█▉        | 241/1261 [06:00<25:29,  1.50s/it]



 19%|█▉        | 242/1261 [06:02<25:21,  1.49s/it]



 19%|█▉        | 243/1261 [06:03<25:17,  1.49s/it]



 19%|█▉        | 244/1261 [06:05<25:12,  1.49s/it]



 19%|█▉        | 245/1261 [06:06<25:11,  1.49s/it]



 20%|█▉        | 246/1261 [06:08<24:58,  1.48s/it]



 20%|█▉        | 247/1261 [06:09<24:44,  1.46s/it]



 20%|█▉        | 248/1261 [06:11<24:42,  1.46s/it]



 20%|█▉        | 249/1261 [06:12<24:48,  1.47s/it]



 20%|█▉        | 250/1261 [06:14<24:56,  1.48s/it]



 20%|█▉        | 251/1261 [06:15<24:58,  1.48s/it]



 20%|█▉        | 252/1261 [06:17<25:07,  1.49s/it]



 20%|██        | 253/1261 [06:18<25:05,  1.49s/it]



 20%|██        | 254/1261 [06:20<25:07,  1.50s/it]



 20%|██        | 255/1261 [06:21<25:01,  1.49s/it]



 20%|██        | 256/1261 [06:23<25:03,  1.50s/it]



 20%|██        | 257/1261 [06:24<25:01,  1.50s/it]



 20%|██        | 258/1261 [06:26<24:57,  1.49s/it]



 21%|██        | 259/1261 [06:27<24:54,  1.49s/it]



 21%|██        | 260/1261 [06:29<24:47,  1.49s/it]



 21%|██        | 261/1261 [06:30<24:50,  1.49s/it]



 21%|██        | 262/1261 [06:32<24:48,  1.49s/it]



 21%|██        | 263/1261 [06:33<24:42,  1.49s/it]



 21%|██        | 264/1261 [06:35<24:44,  1.49s/it]



 21%|██        | 265/1261 [06:36<24:53,  1.50s/it]



 21%|██        | 266/1261 [06:38<24:49,  1.50s/it]



 21%|██        | 267/1261 [06:39<24:55,  1.50s/it]



 21%|██▏       | 268/1261 [06:41<24:59,  1.51s/it]



 21%|██▏       | 269/1261 [06:42<24:57,  1.51s/it]



 21%|██▏       | 270/1261 [06:44<24:50,  1.50s/it]



 21%|██▏       | 271/1261 [06:45<24:36,  1.49s/it]



 22%|██▏       | 272/1261 [06:47<24:42,  1.50s/it]



 22%|██▏       | 273/1261 [06:48<24:47,  1.51s/it]



 22%|██▏       | 274/1261 [06:50<24:53,  1.51s/it]



 22%|██▏       | 275/1261 [06:51<24:54,  1.52s/it]



 22%|██▏       | 276/1261 [06:53<25:00,  1.52s/it]



 22%|██▏       | 277/1261 [06:54<24:59,  1.52s/it]



 22%|██▏       | 278/1261 [06:56<25:02,  1.53s/it]



 22%|██▏       | 279/1261 [06:57<25:02,  1.53s/it]



 22%|██▏       | 280/1261 [06:59<24:59,  1.53s/it]



 22%|██▏       | 281/1261 [07:00<24:48,  1.52s/it]



 22%|██▏       | 282/1261 [07:02<24:36,  1.51s/it]



 22%|██▏       | 283/1261 [07:03<24:27,  1.50s/it]



 23%|██▎       | 284/1261 [07:05<24:17,  1.49s/it]



 23%|██▎       | 285/1261 [07:06<24:09,  1.49s/it]



 23%|██▎       | 286/1261 [07:08<24:02,  1.48s/it]



 23%|██▎       | 287/1261 [07:09<23:57,  1.48s/it]



 23%|██▎       | 288/1261 [07:11<23:53,  1.47s/it]



 23%|██▎       | 289/1261 [07:12<23:49,  1.47s/it]



 23%|██▎       | 290/1261 [07:14<23:41,  1.46s/it]



 23%|██▎       | 291/1261 [07:15<23:48,  1.47s/it]



 23%|██▎       | 292/1261 [07:17<23:51,  1.48s/it]



 23%|██▎       | 293/1261 [07:18<23:52,  1.48s/it]



 23%|██▎       | 294/1261 [07:20<23:55,  1.48s/it]



 23%|██▎       | 295/1261 [07:21<23:55,  1.49s/it]



 23%|██▎       | 296/1261 [07:23<23:55,  1.49s/it]



 24%|██▎       | 297/1261 [07:24<24:02,  1.50s/it]



 24%|██▎       | 298/1261 [07:26<24:02,  1.50s/it]



 24%|██▎       | 299/1261 [07:27<23:50,  1.49s/it]



 24%|██▍       | 300/1261 [07:29<23:35,  1.47s/it]



 24%|██▍       | 301/1261 [07:30<23:28,  1.47s/it]



 24%|██▍       | 302/1261 [07:31<23:21,  1.46s/it]



 24%|██▍       | 303/1261 [07:33<23:23,  1.46s/it]



 24%|██▍       | 304/1261 [07:34<23:23,  1.47s/it]



 24%|██▍       | 305/1261 [07:36<23:21,  1.47s/it]



 24%|██▍       | 306/1261 [07:37<23:18,  1.46s/it]



 24%|██▍       | 307/1261 [07:39<23:09,  1.46s/it]



 24%|██▍       | 308/1261 [07:40<23:02,  1.45s/it]



 25%|██▍       | 309/1261 [07:42<22:55,  1.45s/it]



 25%|██▍       | 310/1261 [07:43<22:52,  1.44s/it]



 25%|██▍       | 311/1261 [07:44<22:46,  1.44s/it]



 25%|██▍       | 312/1261 [07:46<22:44,  1.44s/it]



 25%|██▍       | 313/1261 [07:47<22:45,  1.44s/it]



 25%|██▍       | 314/1261 [07:49<22:51,  1.45s/it]



 25%|██▍       | 315/1261 [07:50<22:57,  1.46s/it]



 25%|██▌       | 316/1261 [07:52<23:00,  1.46s/it]



 25%|██▌       | 317/1261 [07:53<22:53,  1.46s/it]



 25%|██▌       | 318/1261 [07:55<23:07,  1.47s/it]



 25%|██▌       | 319/1261 [07:56<23:23,  1.49s/it]



 25%|██▌       | 320/1261 [07:58<23:30,  1.50s/it]



 25%|██▌       | 321/1261 [07:59<23:23,  1.49s/it]



 26%|██▌       | 322/1261 [08:01<23:10,  1.48s/it]



 26%|██▌       | 323/1261 [08:02<23:09,  1.48s/it]



 26%|██▌       | 324/1261 [08:04<23:12,  1.49s/it]



 26%|██▌       | 325/1261 [08:05<23:11,  1.49s/it]



 26%|██▌       | 326/1261 [08:07<23:09,  1.49s/it]



 26%|██▌       | 327/1261 [08:08<23:10,  1.49s/it]



 26%|██▌       | 328/1261 [08:10<23:08,  1.49s/it]



 26%|██▌       | 329/1261 [08:11<22:54,  1.48s/it]



 26%|██▌       | 330/1261 [08:13<22:56,  1.48s/it]



 26%|██▌       | 331/1261 [08:14<22:48,  1.47s/it]



 26%|██▋       | 332/1261 [08:15<22:40,  1.46s/it]



 26%|██▋       | 333/1261 [08:17<22:51,  1.48s/it]



 26%|██▋       | 334/1261 [08:18<22:59,  1.49s/it]



 27%|██▋       | 335/1261 [08:20<23:01,  1.49s/it]



 27%|██▋       | 336/1261 [08:22<23:10,  1.50s/it]



 27%|██▋       | 337/1261 [08:23<23:09,  1.50s/it]



 27%|██▋       | 338/1261 [08:25<23:03,  1.50s/it]



 27%|██▋       | 339/1261 [08:26<23:00,  1.50s/it]



 27%|██▋       | 340/1261 [08:27<22:54,  1.49s/it]



 27%|██▋       | 341/1261 [08:29<22:44,  1.48s/it]



 27%|██▋       | 342/1261 [08:30<22:38,  1.48s/it]



 27%|██▋       | 343/1261 [08:32<22:38,  1.48s/it]



 27%|██▋       | 344/1261 [08:33<22:34,  1.48s/it]



 27%|██▋       | 345/1261 [08:35<22:36,  1.48s/it]



 27%|██▋       | 346/1261 [08:36<22:36,  1.48s/it]



 28%|██▊       | 347/1261 [08:38<22:35,  1.48s/it]



 28%|██▊       | 348/1261 [08:39<22:38,  1.49s/it]



 28%|██▊       | 349/1261 [08:41<22:36,  1.49s/it]



 28%|██▊       | 350/1261 [08:42<22:38,  1.49s/it]



 28%|██▊       | 351/1261 [08:44<22:37,  1.49s/it]



 28%|██▊       | 352/1261 [08:45<22:27,  1.48s/it]



 28%|██▊       | 353/1261 [08:47<22:18,  1.47s/it]



 28%|██▊       | 354/1261 [08:48<22:14,  1.47s/it]



 28%|██▊       | 355/1261 [08:50<22:14,  1.47s/it]



 28%|██▊       | 356/1261 [08:51<22:16,  1.48s/it]



 28%|██▊       | 357/1261 [08:53<22:15,  1.48s/it]



 28%|██▊       | 358/1261 [08:54<22:23,  1.49s/it]



 28%|██▊       | 359/1261 [08:56<22:18,  1.48s/it]



 29%|██▊       | 360/1261 [08:57<22:20,  1.49s/it]



 29%|██▊       | 361/1261 [08:59<22:09,  1.48s/it]



 29%|██▊       | 362/1261 [09:00<22:02,  1.47s/it]



 29%|██▉       | 363/1261 [09:01<21:59,  1.47s/it]



 29%|██▉       | 364/1261 [09:03<22:03,  1.48s/it]



 29%|██▉       | 365/1261 [09:04<22:02,  1.48s/it]



 29%|██▉       | 366/1261 [09:06<22:01,  1.48s/it]



 29%|██▉       | 367/1261 [09:07<21:56,  1.47s/it]



 29%|██▉       | 368/1261 [09:09<21:55,  1.47s/it]



 29%|██▉       | 369/1261 [09:10<21:55,  1.48s/it]



 29%|██▉       | 370/1261 [09:12<21:55,  1.48s/it]



 29%|██▉       | 371/1261 [09:13<21:46,  1.47s/it]



 30%|██▉       | 372/1261 [09:15<21:43,  1.47s/it]



 30%|██▉       | 373/1261 [09:16<21:40,  1.46s/it]



 30%|██▉       | 374/1261 [09:18<21:43,  1.47s/it]



 30%|██▉       | 375/1261 [09:19<21:34,  1.46s/it]



 30%|██▉       | 376/1261 [09:21<21:30,  1.46s/it]



 30%|██▉       | 377/1261 [09:22<21:28,  1.46s/it]



 30%|██▉       | 378/1261 [09:23<21:21,  1.45s/it]



 30%|███       | 379/1261 [09:25<21:22,  1.45s/it]



 30%|███       | 380/1261 [09:26<21:22,  1.46s/it]



 30%|███       | 381/1261 [09:28<21:25,  1.46s/it]



 30%|███       | 382/1261 [09:29<21:28,  1.47s/it]



 30%|███       | 383/1261 [09:31<21:38,  1.48s/it]



 30%|███       | 384/1261 [09:32<21:55,  1.50s/it]



 31%|███       | 385/1261 [09:34<22:00,  1.51s/it]



 31%|███       | 386/1261 [09:35<22:02,  1.51s/it]



 31%|███       | 387/1261 [09:37<21:58,  1.51s/it]



 31%|███       | 388/1261 [09:38<21:35,  1.48s/it]



 31%|███       | 389/1261 [09:40<21:27,  1.48s/it]



 31%|███       | 390/1261 [09:41<21:31,  1.48s/it]



 31%|███       | 391/1261 [09:43<21:39,  1.49s/it]



 31%|███       | 392/1261 [09:44<21:50,  1.51s/it]



 31%|███       | 393/1261 [09:46<21:57,  1.52s/it]



 31%|███       | 394/1261 [09:47<21:44,  1.50s/it]



 31%|███▏      | 395/1261 [09:49<21:37,  1.50s/it]



 31%|███▏      | 396/1261 [09:50<21:21,  1.48s/it]



 31%|███▏      | 397/1261 [09:52<21:28,  1.49s/it]



 32%|███▏      | 398/1261 [09:53<21:38,  1.50s/it]



 32%|███▏      | 399/1261 [09:55<21:42,  1.51s/it]



 32%|███▏      | 400/1261 [09:56<21:23,  1.49s/it]



 32%|███▏      | 401/1261 [09:58<21:08,  1.48s/it]



 32%|███▏      | 402/1261 [09:59<21:02,  1.47s/it]



 32%|███▏      | 403/1261 [10:01<21:03,  1.47s/it]



 32%|███▏      | 404/1261 [10:02<21:08,  1.48s/it]



 32%|███▏      | 405/1261 [10:04<21:15,  1.49s/it]



 32%|███▏      | 406/1261 [10:05<21:18,  1.50s/it]



 32%|███▏      | 407/1261 [10:07<21:14,  1.49s/it]



 32%|███▏      | 408/1261 [10:08<21:07,  1.49s/it]



 32%|███▏      | 409/1261 [10:10<21:16,  1.50s/it]



 33%|███▎      | 410/1261 [10:11<21:22,  1.51s/it]



 33%|███▎      | 411/1261 [10:13<21:22,  1.51s/it]



 33%|███▎      | 412/1261 [10:14<21:15,  1.50s/it]



 33%|███▎      | 413/1261 [10:16<21:16,  1.51s/it]



 33%|███▎      | 414/1261 [10:17<21:17,  1.51s/it]



 33%|███▎      | 415/1261 [10:19<21:16,  1.51s/it]



 33%|███▎      | 416/1261 [10:20<21:23,  1.52s/it]



 33%|███▎      | 417/1261 [10:22<21:29,  1.53s/it]



 33%|███▎      | 418/1261 [10:23<21:13,  1.51s/it]



 33%|███▎      | 419/1261 [10:25<21:09,  1.51s/it]



 33%|███▎      | 420/1261 [10:26<21:04,  1.50s/it]



 33%|███▎      | 421/1261 [10:28<21:05,  1.51s/it]



 33%|███▎      | 422/1261 [10:29<21:12,  1.52s/it]



 34%|███▎      | 423/1261 [10:31<21:19,  1.53s/it]



 34%|███▎      | 424/1261 [10:32<21:20,  1.53s/it]



 34%|███▎      | 425/1261 [10:34<21:08,  1.52s/it]



 34%|███▍      | 426/1261 [10:35<20:52,  1.50s/it]



 34%|███▍      | 427/1261 [10:37<20:52,  1.50s/it]



 34%|███▍      | 428/1261 [10:38<20:49,  1.50s/it]



 34%|███▍      | 429/1261 [10:40<20:40,  1.49s/it]



 34%|███▍      | 430/1261 [10:41<20:43,  1.50s/it]



 34%|███▍      | 431/1261 [10:43<20:38,  1.49s/it]



 34%|███▍      | 432/1261 [10:44<20:32,  1.49s/it]



 34%|███▍      | 433/1261 [10:46<20:26,  1.48s/it]



 34%|███▍      | 434/1261 [10:47<20:35,  1.49s/it]



 34%|███▍      | 435/1261 [10:49<20:38,  1.50s/it]



 35%|███▍      | 436/1261 [10:50<20:33,  1.50s/it]



 35%|███▍      | 437/1261 [10:52<20:27,  1.49s/it]



 35%|███▍      | 438/1261 [10:53<20:30,  1.50s/it]



 35%|███▍      | 439/1261 [10:55<20:29,  1.50s/it]



 35%|███▍      | 440/1261 [10:56<20:26,  1.49s/it]



 35%|███▍      | 441/1261 [10:58<20:24,  1.49s/it]



 35%|███▌      | 442/1261 [10:59<20:27,  1.50s/it]



 35%|███▌      | 443/1261 [11:01<20:33,  1.51s/it]



 35%|███▌      | 444/1261 [11:02<20:39,  1.52s/it]



 35%|███▌      | 445/1261 [11:04<20:38,  1.52s/it]



 35%|███▌      | 446/1261 [11:05<20:36,  1.52s/it]



 35%|███▌      | 447/1261 [11:07<20:36,  1.52s/it]



 36%|███▌      | 448/1261 [11:08<20:37,  1.52s/it]



 36%|███▌      | 449/1261 [11:10<20:38,  1.53s/it]



 36%|███▌      | 450/1261 [11:12<20:27,  1.51s/it]



 36%|███▌      | 451/1261 [11:13<20:16,  1.50s/it]



 36%|███▌      | 452/1261 [11:15<20:19,  1.51s/it]



 36%|███▌      | 453/1261 [11:16<20:21,  1.51s/it]



 36%|███▌      | 454/1261 [11:18<20:24,  1.52s/it]



 36%|███▌      | 455/1261 [11:19<20:25,  1.52s/it]



 36%|███▌      | 456/1261 [11:21<20:16,  1.51s/it]



 36%|███▌      | 457/1261 [11:22<20:14,  1.51s/it]



 36%|███▋      | 458/1261 [11:24<20:19,  1.52s/it]



 36%|███▋      | 459/1261 [11:25<20:13,  1.51s/it]



 36%|███▋      | 460/1261 [11:27<20:09,  1.51s/it]



 37%|███▋      | 461/1261 [11:28<20:06,  1.51s/it]



 37%|███▋      | 462/1261 [11:30<20:01,  1.50s/it]



 37%|███▋      | 463/1261 [11:31<20:03,  1.51s/it]



 37%|███▋      | 464/1261 [11:33<20:03,  1.51s/it]



 37%|███▋      | 465/1261 [11:34<20:02,  1.51s/it]



 37%|███▋      | 466/1261 [11:36<20:04,  1.51s/it]



 37%|███▋      | 467/1261 [11:37<20:13,  1.53s/it]



 37%|███▋      | 468/1261 [11:39<20:04,  1.52s/it]



 37%|███▋      | 469/1261 [11:40<20:02,  1.52s/it]



 37%|███▋      | 470/1261 [11:42<19:50,  1.51s/it]



 37%|███▋      | 471/1261 [11:43<19:47,  1.50s/it]



 37%|███▋      | 472/1261 [11:45<19:45,  1.50s/it]



 38%|███▊      | 473/1261 [11:46<19:51,  1.51s/it]



 38%|███▊      | 474/1261 [11:48<19:49,  1.51s/it]



 38%|███▊      | 475/1261 [11:49<19:54,  1.52s/it]



 38%|███▊      | 476/1261 [11:51<19:45,  1.51s/it]



 38%|███▊      | 477/1261 [11:52<19:41,  1.51s/it]



 38%|███▊      | 478/1261 [11:54<19:39,  1.51s/it]



 38%|███▊      | 479/1261 [11:55<19:43,  1.51s/it]



 38%|███▊      | 480/1261 [11:57<19:34,  1.50s/it]



 38%|███▊      | 481/1261 [11:58<19:39,  1.51s/it]



 38%|███▊      | 482/1261 [12:00<20:03,  1.54s/it]



 38%|███▊      | 483/1261 [12:01<19:52,  1.53s/it]



 38%|███▊      | 484/1261 [12:03<19:36,  1.51s/it]



 38%|███▊      | 485/1261 [12:04<19:23,  1.50s/it]



 39%|███▊      | 486/1261 [12:06<19:26,  1.50s/it]



 39%|███▊      | 487/1261 [12:07<19:31,  1.51s/it]



 39%|███▊      | 488/1261 [12:09<19:29,  1.51s/it]



 39%|███▉      | 489/1261 [12:11<19:32,  1.52s/it]



 39%|███▉      | 490/1261 [12:12<19:31,  1.52s/it]



 39%|███▉      | 491/1261 [12:14<19:28,  1.52s/it]



 39%|███▉      | 492/1261 [12:15<19:14,  1.50s/it]



 39%|███▉      | 493/1261 [12:17<19:16,  1.51s/it]



 39%|███▉      | 494/1261 [12:18<19:16,  1.51s/it]



 39%|███▉      | 495/1261 [12:20<19:17,  1.51s/it]



 39%|███▉      | 496/1261 [12:21<19:06,  1.50s/it]



 39%|███▉      | 497/1261 [12:23<19:07,  1.50s/it]



 39%|███▉      | 498/1261 [12:24<19:07,  1.50s/it]



 40%|███▉      | 499/1261 [12:26<19:03,  1.50s/it]



 40%|███▉      | 500/1261 [12:27<18:55,  1.49s/it]



 40%|███▉      | 501/1261 [12:29<18:58,  1.50s/it]



 40%|███▉      | 502/1261 [12:30<18:55,  1.50s/it]



 40%|███▉      | 503/1261 [12:32<18:55,  1.50s/it]



 40%|███▉      | 504/1261 [12:33<18:57,  1.50s/it]



 40%|████      | 505/1261 [12:35<18:56,  1.50s/it]



 40%|████      | 506/1261 [12:36<18:59,  1.51s/it]



 40%|████      | 507/1261 [12:38<18:46,  1.49s/it]



 40%|████      | 508/1261 [12:39<18:34,  1.48s/it]



 40%|████      | 509/1261 [12:40<18:31,  1.48s/it]



 40%|████      | 510/1261 [12:42<18:24,  1.47s/it]



 41%|████      | 511/1261 [12:43<18:36,  1.49s/it]



 41%|████      | 512/1261 [12:45<18:38,  1.49s/it]



 41%|████      | 513/1261 [12:46<18:28,  1.48s/it]



 41%|████      | 514/1261 [12:48<18:19,  1.47s/it]



 41%|████      | 515/1261 [12:49<18:11,  1.46s/it]



 41%|████      | 516/1261 [12:51<18:11,  1.47s/it]



 41%|████      | 517/1261 [12:52<18:18,  1.48s/it]



 41%|████      | 518/1261 [12:54<18:29,  1.49s/it]



 41%|████      | 519/1261 [12:55<18:28,  1.49s/it]



 41%|████      | 520/1261 [12:57<18:23,  1.49s/it]



 41%|████▏     | 521/1261 [12:58<18:12,  1.48s/it]



 41%|████▏     | 522/1261 [13:00<18:09,  1.47s/it]



 41%|████▏     | 523/1261 [13:01<18:12,  1.48s/it]



 42%|████▏     | 524/1261 [13:03<18:10,  1.48s/it]



 42%|████▏     | 525/1261 [13:04<18:12,  1.48s/it]



 42%|████▏     | 526/1261 [13:06<18:10,  1.48s/it]



 42%|████▏     | 527/1261 [13:07<18:13,  1.49s/it]



 42%|████▏     | 528/1261 [13:09<18:23,  1.51s/it]



 42%|████▏     | 529/1261 [13:10<18:26,  1.51s/it]



 42%|████▏     | 530/1261 [13:12<18:29,  1.52s/it]



 42%|████▏     | 531/1261 [13:13<18:24,  1.51s/it]



 42%|████▏     | 532/1261 [13:15<18:28,  1.52s/it]



 42%|████▏     | 533/1261 [13:16<18:25,  1.52s/it]



 42%|████▏     | 534/1261 [13:18<18:22,  1.52s/it]



 42%|████▏     | 535/1261 [13:19<18:21,  1.52s/it]



 43%|████▎     | 536/1261 [13:21<18:12,  1.51s/it]



 43%|████▎     | 537/1261 [13:22<18:09,  1.50s/it]



 43%|████▎     | 538/1261 [13:24<17:54,  1.49s/it]



 43%|████▎     | 539/1261 [13:25<17:53,  1.49s/it]



 43%|████▎     | 540/1261 [13:27<17:41,  1.47s/it]



 43%|████▎     | 541/1261 [13:28<17:36,  1.47s/it]



 43%|████▎     | 542/1261 [13:30<17:32,  1.46s/it]



 43%|████▎     | 543/1261 [13:31<17:41,  1.48s/it]



 43%|████▎     | 544/1261 [13:33<17:49,  1.49s/it]



 43%|████▎     | 545/1261 [13:34<17:49,  1.49s/it]



 43%|████▎     | 546/1261 [13:36<17:58,  1.51s/it]



 43%|████▎     | 547/1261 [13:37<18:02,  1.52s/it]



 43%|████▎     | 548/1261 [13:39<18:01,  1.52s/it]



 44%|████▎     | 549/1261 [13:40<18:03,  1.52s/it]



 44%|████▎     | 550/1261 [13:42<17:52,  1.51s/it]



 44%|████▎     | 551/1261 [13:43<17:51,  1.51s/it]



 44%|████▍     | 552/1261 [13:45<17:48,  1.51s/it]



 44%|████▍     | 553/1261 [13:46<17:44,  1.50s/it]



 44%|████▍     | 554/1261 [13:48<17:46,  1.51s/it]



 44%|████▍     | 555/1261 [13:49<17:35,  1.50s/it]



 44%|████▍     | 556/1261 [13:51<17:42,  1.51s/it]



 44%|████▍     | 557/1261 [13:52<17:41,  1.51s/it]



 44%|████▍     | 558/1261 [13:54<17:38,  1.51s/it]



 44%|████▍     | 559/1261 [13:55<17:27,  1.49s/it]



 44%|████▍     | 560/1261 [13:57<17:21,  1.49s/it]



 44%|████▍     | 561/1261 [13:58<17:13,  1.48s/it]



 45%|████▍     | 562/1261 [14:00<17:09,  1.47s/it]



 45%|████▍     | 563/1261 [14:01<17:17,  1.49s/it]



 45%|████▍     | 564/1261 [14:03<17:13,  1.48s/it]



 45%|████▍     | 565/1261 [14:04<17:15,  1.49s/it]



 45%|████▍     | 566/1261 [14:06<17:15,  1.49s/it]



 45%|████▍     | 567/1261 [14:07<17:15,  1.49s/it]



 45%|████▌     | 568/1261 [14:09<17:12,  1.49s/it]



 45%|████▌     | 569/1261 [14:10<17:07,  1.48s/it]



 45%|████▌     | 570/1261 [14:11<16:56,  1.47s/it]



 45%|████▌     | 571/1261 [14:13<17:01,  1.48s/it]



 45%|████▌     | 572/1261 [14:14<17:02,  1.48s/it]



 45%|████▌     | 573/1261 [14:16<17:07,  1.49s/it]



 46%|████▌     | 574/1261 [14:18<17:10,  1.50s/it]



 46%|████▌     | 575/1261 [14:19<17:13,  1.51s/it]



 46%|████▌     | 576/1261 [14:21<17:08,  1.50s/it]



 46%|████▌     | 577/1261 [14:22<17:03,  1.50s/it]



 46%|████▌     | 578/1261 [14:24<17:04,  1.50s/it]



 46%|████▌     | 579/1261 [14:25<17:09,  1.51s/it]



 46%|████▌     | 580/1261 [14:27<17:16,  1.52s/it]



 46%|████▌     | 581/1261 [14:28<17:20,  1.53s/it]



 46%|████▌     | 582/1261 [14:30<17:18,  1.53s/it]



 46%|████▌     | 583/1261 [14:31<17:22,  1.54s/it]



 46%|████▋     | 584/1261 [14:33<17:17,  1.53s/it]



 46%|████▋     | 585/1261 [14:34<17:14,  1.53s/it]



 46%|████▋     | 586/1261 [14:36<17:16,  1.54s/it]



 47%|████▋     | 587/1261 [14:37<17:15,  1.54s/it]



 47%|████▋     | 588/1261 [14:39<17:14,  1.54s/it]



 47%|████▋     | 589/1261 [14:40<17:04,  1.53s/it]



 47%|████▋     | 590/1261 [14:42<16:53,  1.51s/it]



 47%|████▋     | 591/1261 [14:43<16:47,  1.50s/it]



 47%|████▋     | 592/1261 [14:45<16:36,  1.49s/it]



 47%|████▋     | 593/1261 [14:46<16:25,  1.47s/it]



 47%|████▋     | 594/1261 [14:48<16:26,  1.48s/it]



 47%|████▋     | 595/1261 [14:49<16:24,  1.48s/it]



 47%|████▋     | 596/1261 [14:51<16:24,  1.48s/it]



 47%|████▋     | 597/1261 [14:52<16:19,  1.48s/it]



 47%|████▋     | 598/1261 [14:54<16:13,  1.47s/it]



 48%|████▊     | 599/1261 [14:55<16:10,  1.47s/it]



 48%|████▊     | 600/1261 [14:57<16:09,  1.47s/it]



 48%|████▊     | 601/1261 [14:58<16:05,  1.46s/it]



 48%|████▊     | 602/1261 [14:59<16:07,  1.47s/it]



 48%|████▊     | 603/1261 [15:01<16:12,  1.48s/it]



 48%|████▊     | 604/1261 [15:02<16:11,  1.48s/it]



 48%|████▊     | 605/1261 [15:04<16:19,  1.49s/it]



 48%|████▊     | 606/1261 [15:06<16:26,  1.51s/it]



 48%|████▊     | 607/1261 [15:07<16:34,  1.52s/it]



 48%|████▊     | 608/1261 [15:09<16:36,  1.53s/it]



 48%|████▊     | 609/1261 [15:10<16:40,  1.53s/it]



 48%|████▊     | 610/1261 [15:12<16:24,  1.51s/it]



 48%|████▊     | 611/1261 [15:13<16:16,  1.50s/it]



 49%|████▊     | 612/1261 [15:15<16:09,  1.49s/it]



 49%|████▊     | 613/1261 [15:16<15:57,  1.48s/it]



 49%|████▊     | 614/1261 [15:18<15:56,  1.48s/it]



 49%|████▉     | 615/1261 [15:19<15:57,  1.48s/it]



 49%|████▉     | 616/1261 [15:21<16:00,  1.49s/it]



 49%|████▉     | 617/1261 [15:22<16:11,  1.51s/it]



 49%|████▉     | 618/1261 [15:24<16:12,  1.51s/it]



 49%|████▉     | 619/1261 [15:25<16:13,  1.52s/it]



 49%|████▉     | 620/1261 [15:27<16:15,  1.52s/it]



 49%|████▉     | 621/1261 [15:28<16:10,  1.52s/it]



 49%|████▉     | 622/1261 [15:30<16:07,  1.51s/it]



 49%|████▉     | 623/1261 [15:31<16:01,  1.51s/it]



 49%|████▉     | 624/1261 [15:33<15:50,  1.49s/it]



 50%|████▉     | 625/1261 [15:34<15:59,  1.51s/it]



 50%|████▉     | 626/1261 [15:36<16:02,  1.52s/it]



 50%|████▉     | 627/1261 [15:37<16:01,  1.52s/it]



 50%|████▉     | 628/1261 [15:39<16:01,  1.52s/it]



 50%|████▉     | 629/1261 [15:40<15:58,  1.52s/it]



 50%|████▉     | 630/1261 [15:42<15:51,  1.51s/it]



 50%|█████     | 631/1261 [15:43<15:51,  1.51s/it]



 50%|█████     | 632/1261 [15:45<15:54,  1.52s/it]



 50%|█████     | 633/1261 [15:46<15:50,  1.51s/it]



 50%|█████     | 634/1261 [15:48<15:45,  1.51s/it]



 50%|█████     | 635/1261 [15:49<15:47,  1.51s/it]



 50%|█████     | 636/1261 [15:51<15:42,  1.51s/it]



 51%|█████     | 637/1261 [15:52<15:37,  1.50s/it]



 51%|█████     | 638/1261 [15:54<15:36,  1.50s/it]



 51%|█████     | 639/1261 [15:55<15:27,  1.49s/it]



 51%|█████     | 640/1261 [15:57<15:14,  1.47s/it]



 51%|█████     | 641/1261 [15:58<15:16,  1.48s/it]



 51%|█████     | 642/1261 [16:00<15:08,  1.47s/it]



 51%|█████     | 643/1261 [16:01<15:00,  1.46s/it]



 51%|█████     | 644/1261 [16:02<14:57,  1.46s/it]



 51%|█████     | 645/1261 [16:04<14:59,  1.46s/it]



 51%|█████     | 646/1261 [16:05<14:59,  1.46s/it]



 51%|█████▏    | 647/1261 [16:07<15:01,  1.47s/it]



 51%|█████▏    | 648/1261 [16:08<14:56,  1.46s/it]



 51%|█████▏    | 649/1261 [16:10<15:01,  1.47s/it]



 52%|█████▏    | 650/1261 [16:11<15:02,  1.48s/it]



 52%|█████▏    | 651/1261 [16:13<15:02,  1.48s/it]



 52%|█████▏    | 652/1261 [16:14<14:57,  1.47s/it]



 52%|█████▏    | 653/1261 [16:16<14:48,  1.46s/it]



 52%|█████▏    | 654/1261 [16:17<14:43,  1.46s/it]



 52%|█████▏    | 655/1261 [16:19<14:41,  1.45s/it]



 52%|█████▏    | 656/1261 [16:20<14:48,  1.47s/it]



 52%|█████▏    | 657/1261 [16:22<14:54,  1.48s/it]



 52%|█████▏    | 658/1261 [16:23<15:02,  1.50s/it]



 52%|█████▏    | 659/1261 [16:25<15:07,  1.51s/it]



 52%|█████▏    | 660/1261 [16:26<15:04,  1.50s/it]



 52%|█████▏    | 661/1261 [16:28<15:00,  1.50s/it]



 52%|█████▏    | 662/1261 [16:29<14:56,  1.50s/it]



 53%|█████▎    | 663/1261 [16:31<14:53,  1.49s/it]



 53%|█████▎    | 664/1261 [16:32<14:50,  1.49s/it]



 53%|█████▎    | 665/1261 [16:34<14:47,  1.49s/it]



 53%|█████▎    | 666/1261 [16:35<14:38,  1.48s/it]



 53%|█████▎    | 667/1261 [16:37<14:38,  1.48s/it]



 53%|█████▎    | 668/1261 [16:38<14:36,  1.48s/it]



 53%|█████▎    | 669/1261 [16:40<14:45,  1.50s/it]



 53%|█████▎    | 670/1261 [16:41<14:44,  1.50s/it]



 53%|█████▎    | 671/1261 [16:43<14:42,  1.50s/it]



 53%|█████▎    | 672/1261 [16:44<14:39,  1.49s/it]



 53%|█████▎    | 673/1261 [16:46<14:33,  1.49s/it]



 53%|█████▎    | 674/1261 [16:47<14:34,  1.49s/it]



 54%|█████▎    | 675/1261 [16:49<14:38,  1.50s/it]



 54%|█████▎    | 676/1261 [16:50<14:38,  1.50s/it]



 54%|█████▎    | 677/1261 [16:52<14:43,  1.51s/it]



 54%|█████▍    | 678/1261 [16:53<14:42,  1.51s/it]



 54%|█████▍    | 679/1261 [16:55<14:44,  1.52s/it]



 54%|█████▍    | 680/1261 [16:56<14:43,  1.52s/it]



 54%|█████▍    | 681/1261 [16:58<14:43,  1.52s/it]



 54%|█████▍    | 682/1261 [16:59<14:46,  1.53s/it]



 54%|█████▍    | 683/1261 [17:01<14:49,  1.54s/it]



 54%|█████▍    | 684/1261 [17:02<14:41,  1.53s/it]



 54%|█████▍    | 685/1261 [17:04<14:31,  1.51s/it]



 54%|█████▍    | 686/1261 [17:05<14:25,  1.50s/it]



 54%|█████▍    | 687/1261 [17:07<14:25,  1.51s/it]



 55%|█████▍    | 688/1261 [17:08<14:17,  1.50s/it]



 55%|█████▍    | 689/1261 [17:10<14:15,  1.50s/it]



 55%|█████▍    | 690/1261 [17:11<14:16,  1.50s/it]



 55%|█████▍    | 691/1261 [17:13<14:15,  1.50s/it]



 55%|█████▍    | 692/1261 [17:14<14:10,  1.49s/it]



 55%|█████▍    | 693/1261 [17:16<14:09,  1.50s/it]



 55%|█████▌    | 694/1261 [17:17<14:17,  1.51s/it]



 55%|█████▌    | 695/1261 [17:19<14:16,  1.51s/it]



 55%|█████▌    | 696/1261 [17:20<14:16,  1.52s/it]



 55%|█████▌    | 697/1261 [17:22<14:13,  1.51s/it]



 55%|█████▌    | 698/1261 [17:23<14:15,  1.52s/it]



 55%|█████▌    | 699/1261 [17:25<14:15,  1.52s/it]



 56%|█████▌    | 700/1261 [17:26<14:06,  1.51s/it]



 56%|█████▌    | 701/1261 [17:28<14:03,  1.51s/it]



 56%|█████▌    | 702/1261 [17:29<13:59,  1.50s/it]



 56%|█████▌    | 703/1261 [17:31<13:56,  1.50s/it]



 56%|█████▌    | 704/1261 [17:32<13:54,  1.50s/it]



 56%|█████▌    | 705/1261 [17:34<13:47,  1.49s/it]



 56%|█████▌    | 706/1261 [17:35<13:42,  1.48s/it]



 56%|█████▌    | 707/1261 [17:37<13:39,  1.48s/it]



 56%|█████▌    | 708/1261 [17:38<13:36,  1.48s/it]



 56%|█████▌    | 709/1261 [17:40<13:34,  1.47s/it]



 56%|█████▋    | 710/1261 [17:41<13:36,  1.48s/it]



 56%|█████▋    | 711/1261 [17:43<13:33,  1.48s/it]



 56%|█████▋    | 712/1261 [17:44<13:39,  1.49s/it]



 57%|█████▋    | 713/1261 [17:46<13:38,  1.49s/it]



 57%|█████▋    | 714/1261 [17:47<13:41,  1.50s/it]



 57%|█████▋    | 715/1261 [17:49<13:47,  1.52s/it]



 57%|█████▋    | 716/1261 [17:50<13:50,  1.52s/it]



 57%|█████▋    | 717/1261 [17:52<13:47,  1.52s/it]



 57%|█████▋    | 718/1261 [17:53<13:42,  1.51s/it]



 57%|█████▋    | 719/1261 [17:55<13:44,  1.52s/it]



 57%|█████▋    | 720/1261 [17:56<13:46,  1.53s/it]



 57%|█████▋    | 721/1261 [17:58<13:40,  1.52s/it]



 57%|█████▋    | 722/1261 [17:59<13:39,  1.52s/it]



 57%|█████▋    | 723/1261 [18:01<13:34,  1.51s/it]



 57%|█████▋    | 724/1261 [18:02<13:29,  1.51s/it]



 57%|█████▋    | 725/1261 [18:04<13:33,  1.52s/it]



 58%|█████▊    | 726/1261 [18:05<13:31,  1.52s/it]



 58%|█████▊    | 727/1261 [18:07<13:23,  1.50s/it]



 58%|█████▊    | 728/1261 [18:08<13:24,  1.51s/it]



 58%|█████▊    | 729/1261 [18:10<13:24,  1.51s/it]



 58%|█████▊    | 730/1261 [18:11<13:19,  1.51s/it]



 58%|█████▊    | 731/1261 [18:13<13:13,  1.50s/it]



 58%|█████▊    | 732/1261 [18:14<13:05,  1.48s/it]



 58%|█████▊    | 733/1261 [18:16<13:02,  1.48s/it]



 58%|█████▊    | 734/1261 [18:17<12:58,  1.48s/it]



 58%|█████▊    | 735/1261 [18:19<13:04,  1.49s/it]



 58%|█████▊    | 736/1261 [18:20<13:04,  1.49s/it]



 58%|█████▊    | 737/1261 [18:22<13:06,  1.50s/it]



 59%|█████▊    | 738/1261 [18:23<13:11,  1.51s/it]



 59%|█████▊    | 739/1261 [18:25<13:14,  1.52s/it]



 59%|█████▊    | 740/1261 [18:27<13:17,  1.53s/it]



 59%|█████▉    | 741/1261 [18:28<13:10,  1.52s/it]



 59%|█████▉    | 742/1261 [18:29<13:01,  1.51s/it]



 59%|█████▉    | 743/1261 [18:31<12:56,  1.50s/it]



 59%|█████▉    | 744/1261 [18:33<13:01,  1.51s/it]



 59%|█████▉    | 745/1261 [18:34<13:01,  1.51s/it]



 59%|█████▉    | 746/1261 [18:36<13:07,  1.53s/it]



 59%|█████▉    | 747/1261 [18:37<13:11,  1.54s/it]



 59%|█████▉    | 748/1261 [18:39<13:11,  1.54s/it]



 59%|█████▉    | 749/1261 [18:40<13:03,  1.53s/it]



 59%|█████▉    | 750/1261 [18:42<13:01,  1.53s/it]



 60%|█████▉    | 751/1261 [18:43<12:53,  1.52s/it]



 60%|█████▉    | 752/1261 [18:45<12:50,  1.51s/it]



 60%|█████▉    | 753/1261 [18:46<12:42,  1.50s/it]



 60%|█████▉    | 754/1261 [18:48<12:34,  1.49s/it]



 60%|█████▉    | 755/1261 [18:49<12:28,  1.48s/it]



 60%|█████▉    | 756/1261 [18:51<12:34,  1.49s/it]



 60%|██████    | 757/1261 [18:52<12:35,  1.50s/it]



 60%|██████    | 758/1261 [18:54<12:33,  1.50s/it]



 60%|██████    | 759/1261 [18:55<12:33,  1.50s/it]



 60%|██████    | 760/1261 [18:57<12:30,  1.50s/it]



 60%|██████    | 761/1261 [18:58<12:27,  1.49s/it]



 60%|██████    | 762/1261 [19:00<12:28,  1.50s/it]



 61%|██████    | 763/1261 [19:01<12:27,  1.50s/it]



 61%|██████    | 764/1261 [19:03<12:22,  1.49s/it]



 61%|██████    | 765/1261 [19:04<12:18,  1.49s/it]



 61%|██████    | 766/1261 [19:06<12:16,  1.49s/it]



 61%|██████    | 767/1261 [19:07<12:09,  1.48s/it]



 61%|██████    | 768/1261 [19:09<12:13,  1.49s/it]



 61%|██████    | 769/1261 [19:10<12:17,  1.50s/it]



 61%|██████    | 770/1261 [19:12<12:18,  1.50s/it]



 61%|██████    | 771/1261 [19:13<12:16,  1.50s/it]



 61%|██████    | 772/1261 [19:15<12:11,  1.50s/it]



 61%|██████▏   | 773/1261 [19:16<12:03,  1.48s/it]



 61%|██████▏   | 774/1261 [19:18<12:07,  1.49s/it]



 61%|██████▏   | 775/1261 [19:19<12:00,  1.48s/it]



 62%|██████▏   | 776/1261 [19:21<12:03,  1.49s/it]



 62%|██████▏   | 777/1261 [19:22<12:05,  1.50s/it]



 62%|██████▏   | 778/1261 [19:24<12:08,  1.51s/it]



 62%|██████▏   | 779/1261 [19:25<12:09,  1.51s/it]



 62%|██████▏   | 780/1261 [19:27<12:04,  1.51s/it]



 62%|██████▏   | 781/1261 [19:28<11:59,  1.50s/it]



 62%|██████▏   | 782/1261 [19:30<11:52,  1.49s/it]



 62%|██████▏   | 783/1261 [19:31<11:54,  1.49s/it]



 62%|██████▏   | 784/1261 [19:33<11:51,  1.49s/it]



 62%|██████▏   | 785/1261 [19:34<11:50,  1.49s/it]



 62%|██████▏   | 786/1261 [19:35<11:48,  1.49s/it]



 62%|██████▏   | 787/1261 [19:37<11:48,  1.49s/it]



 62%|██████▏   | 788/1261 [19:38<11:43,  1.49s/it]



 63%|██████▎   | 789/1261 [19:40<11:47,  1.50s/it]



 63%|██████▎   | 790/1261 [19:41<11:44,  1.50s/it]



 63%|██████▎   | 791/1261 [19:43<11:42,  1.49s/it]



 63%|██████▎   | 792/1261 [19:44<11:42,  1.50s/it]



 63%|██████▎   | 793/1261 [19:46<11:46,  1.51s/it]



 63%|██████▎   | 794/1261 [19:48<11:41,  1.50s/it]



 63%|██████▎   | 795/1261 [19:49<11:38,  1.50s/it]



 63%|██████▎   | 796/1261 [19:50<11:35,  1.50s/it]



 63%|██████▎   | 797/1261 [19:52<11:34,  1.50s/it]



 63%|██████▎   | 798/1261 [19:53<11:32,  1.49s/it]



 63%|██████▎   | 799/1261 [19:55<11:30,  1.49s/it]



 63%|██████▎   | 800/1261 [19:56<11:30,  1.50s/it]



 64%|██████▎   | 801/1261 [19:58<11:28,  1.50s/it]



 64%|██████▎   | 802/1261 [19:59<11:27,  1.50s/it]



 64%|██████▎   | 803/1261 [20:01<11:21,  1.49s/it]



 64%|██████▍   | 804/1261 [20:02<11:14,  1.48s/it]



 64%|██████▍   | 805/1261 [20:04<11:08,  1.46s/it]



 64%|██████▍   | 806/1261 [20:05<11:08,  1.47s/it]



 64%|██████▍   | 807/1261 [20:07<11:01,  1.46s/it]



 64%|██████▍   | 808/1261 [20:08<10:59,  1.46s/it]



 64%|██████▍   | 809/1261 [20:10<10:55,  1.45s/it]



 64%|██████▍   | 810/1261 [20:11<10:51,  1.44s/it]



 64%|██████▍   | 811/1261 [20:13<10:52,  1.45s/it]



 64%|██████▍   | 812/1261 [20:14<10:49,  1.45s/it]



 64%|██████▍   | 813/1261 [20:15<10:48,  1.45s/it]



 65%|██████▍   | 814/1261 [20:17<10:50,  1.46s/it]



 65%|██████▍   | 815/1261 [20:18<10:55,  1.47s/it]



 65%|██████▍   | 816/1261 [20:20<11:02,  1.49s/it]



 65%|██████▍   | 817/1261 [20:21<11:03,  1.50s/it]



 65%|██████▍   | 818/1261 [20:23<10:59,  1.49s/it]



 65%|██████▍   | 819/1261 [20:24<10:50,  1.47s/it]



 65%|██████▌   | 820/1261 [20:26<10:43,  1.46s/it]



 65%|██████▌   | 821/1261 [20:27<10:36,  1.45s/it]



 65%|██████▌   | 822/1261 [20:29<10:34,  1.44s/it]



 65%|██████▌   | 823/1261 [20:30<10:31,  1.44s/it]



 65%|██████▌   | 824/1261 [20:32<10:32,  1.45s/it]



 65%|██████▌   | 825/1261 [20:33<10:32,  1.45s/it]



 66%|██████▌   | 826/1261 [20:34<10:40,  1.47s/it]



 66%|██████▌   | 827/1261 [20:36<10:46,  1.49s/it]



 66%|██████▌   | 828/1261 [20:38<10:49,  1.50s/it]



 66%|██████▌   | 829/1261 [20:39<10:46,  1.50s/it]



 66%|██████▌   | 830/1261 [20:41<10:44,  1.49s/it]



 66%|██████▌   | 831/1261 [20:42<10:40,  1.49s/it]



 66%|██████▌   | 832/1261 [20:44<10:41,  1.49s/it]



 66%|██████▌   | 833/1261 [20:45<10:43,  1.50s/it]



 66%|██████▌   | 834/1261 [20:47<10:46,  1.51s/it]



 66%|██████▌   | 835/1261 [20:48<10:52,  1.53s/it]



 66%|██████▋   | 836/1261 [20:50<10:51,  1.53s/it]



 66%|██████▋   | 837/1261 [20:51<10:47,  1.53s/it]



 66%|██████▋   | 838/1261 [20:53<10:46,  1.53s/it]



 67%|██████▋   | 839/1261 [20:54<10:51,  1.54s/it]



 67%|██████▋   | 840/1261 [20:56<10:50,  1.55s/it]



 67%|██████▋   | 841/1261 [20:57<10:49,  1.55s/it]



 67%|██████▋   | 842/1261 [20:59<10:48,  1.55s/it]



 67%|██████▋   | 843/1261 [21:00<10:45,  1.54s/it]



 67%|██████▋   | 844/1261 [21:02<10:45,  1.55s/it]



 67%|██████▋   | 845/1261 [21:04<10:45,  1.55s/it]



 67%|██████▋   | 846/1261 [21:05<10:43,  1.55s/it]



 67%|██████▋   | 847/1261 [21:07<10:39,  1.54s/it]



 67%|██████▋   | 848/1261 [21:08<10:37,  1.54s/it]



 67%|██████▋   | 849/1261 [21:10<10:36,  1.54s/it]



 67%|██████▋   | 850/1261 [21:11<10:33,  1.54s/it]



 67%|██████▋   | 851/1261 [21:13<10:32,  1.54s/it]



 68%|██████▊   | 852/1261 [21:14<10:29,  1.54s/it]



 68%|██████▊   | 853/1261 [21:16<10:29,  1.54s/it]



 68%|██████▊   | 854/1261 [21:17<10:30,  1.55s/it]



 68%|██████▊   | 855/1261 [21:19<10:30,  1.55s/it]



 68%|██████▊   | 856/1261 [21:21<10:28,  1.55s/it]



 68%|██████▊   | 857/1261 [21:22<10:26,  1.55s/it]



 68%|██████▊   | 858/1261 [21:24<10:21,  1.54s/it]



 68%|██████▊   | 859/1261 [21:25<10:21,  1.55s/it]



 68%|██████▊   | 860/1261 [21:27<10:21,  1.55s/it]



 68%|██████▊   | 861/1261 [21:28<10:23,  1.56s/it]



 68%|██████▊   | 862/1261 [21:30<10:25,  1.57s/it]



 68%|██████▊   | 863/1261 [21:32<10:22,  1.56s/it]



 69%|██████▊   | 864/1261 [21:33<10:21,  1.57s/it]



 69%|██████▊   | 865/1261 [21:35<10:21,  1.57s/it]



 69%|██████▊   | 866/1261 [21:36<10:16,  1.56s/it]



 69%|██████▉   | 867/1261 [21:38<10:11,  1.55s/it]



 69%|██████▉   | 868/1261 [21:39<10:10,  1.55s/it]



 69%|██████▉   | 869/1261 [21:41<10:06,  1.55s/it]



 69%|██████▉   | 870/1261 [21:42<10:05,  1.55s/it]



 69%|██████▉   | 871/1261 [21:44<10:05,  1.55s/it]



 69%|██████▉   | 872/1261 [21:45<10:02,  1.55s/it]



 69%|██████▉   | 873/1261 [21:47<10:00,  1.55s/it]



 69%|██████▉   | 874/1261 [21:49<10:00,  1.55s/it]



 69%|██████▉   | 875/1261 [21:50<09:56,  1.55s/it]



 69%|██████▉   | 876/1261 [21:52<09:53,  1.54s/it]



 70%|██████▉   | 877/1261 [21:53<09:51,  1.54s/it]



 70%|██████▉   | 878/1261 [21:55<09:53,  1.55s/it]



 70%|██████▉   | 879/1261 [21:56<09:52,  1.55s/it]



 70%|██████▉   | 880/1261 [21:58<09:50,  1.55s/it]



 70%|██████▉   | 881/1261 [21:59<09:46,  1.54s/it]



 70%|██████▉   | 882/1261 [22:01<09:45,  1.54s/it]



 70%|███████   | 883/1261 [22:02<09:40,  1.54s/it]



 70%|███████   | 884/1261 [22:04<09:35,  1.53s/it]



 70%|███████   | 885/1261 [22:05<09:29,  1.51s/it]



 70%|███████   | 886/1261 [22:07<09:25,  1.51s/it]



 70%|███████   | 887/1261 [22:08<09:23,  1.51s/it]



 70%|███████   | 888/1261 [22:10<09:21,  1.50s/it]



 70%|███████   | 889/1261 [22:11<09:21,  1.51s/it]



 71%|███████   | 890/1261 [22:13<09:20,  1.51s/it]



 71%|███████   | 891/1261 [22:14<09:18,  1.51s/it]



 71%|███████   | 892/1261 [22:16<09:15,  1.51s/it]



 71%|███████   | 893/1261 [22:17<09:13,  1.50s/it]



 71%|███████   | 894/1261 [22:19<09:12,  1.51s/it]



 71%|███████   | 895/1261 [22:21<09:12,  1.51s/it]



 71%|███████   | 896/1261 [22:22<09:13,  1.52s/it]



 71%|███████   | 897/1261 [22:24<09:14,  1.52s/it]



 71%|███████   | 898/1261 [22:25<09:11,  1.52s/it]



 71%|███████▏  | 899/1261 [22:27<09:08,  1.51s/it]



 71%|███████▏  | 900/1261 [22:28<09:06,  1.51s/it]



 71%|███████▏  | 901/1261 [22:30<09:06,  1.52s/it]



 72%|███████▏  | 902/1261 [22:31<09:12,  1.54s/it]



 72%|███████▏  | 903/1261 [22:33<09:05,  1.52s/it]



 72%|███████▏  | 904/1261 [22:34<09:04,  1.53s/it]



 72%|███████▏  | 905/1261 [22:36<09:02,  1.52s/it]



 72%|███████▏  | 906/1261 [22:37<08:59,  1.52s/it]



 72%|███████▏  | 907/1261 [22:39<08:57,  1.52s/it]



 72%|███████▏  | 908/1261 [22:40<08:56,  1.52s/it]



 72%|███████▏  | 909/1261 [22:42<08:55,  1.52s/it]



 72%|███████▏  | 910/1261 [22:43<08:57,  1.53s/it]



 72%|███████▏  | 911/1261 [22:45<08:53,  1.52s/it]



 72%|███████▏  | 912/1261 [22:46<08:51,  1.52s/it]



 72%|███████▏  | 913/1261 [22:48<08:47,  1.52s/it]



 72%|███████▏  | 914/1261 [22:49<08:45,  1.51s/it]



 73%|███████▎  | 915/1261 [22:51<08:44,  1.52s/it]



 73%|███████▎  | 916/1261 [22:52<08:42,  1.52s/it]



 73%|███████▎  | 917/1261 [22:54<08:43,  1.52s/it]



 73%|███████▎  | 918/1261 [22:56<08:43,  1.53s/it]



 73%|███████▎  | 919/1261 [22:57<08:40,  1.52s/it]



 73%|███████▎  | 920/1261 [22:59<08:40,  1.53s/it]



 73%|███████▎  | 921/1261 [23:00<08:39,  1.53s/it]



 73%|███████▎  | 922/1261 [23:02<08:40,  1.54s/it]



 73%|███████▎  | 923/1261 [23:03<08:39,  1.54s/it]



 73%|███████▎  | 924/1261 [23:05<08:40,  1.54s/it]



 73%|███████▎  | 925/1261 [23:06<08:42,  1.55s/it]



 73%|███████▎  | 926/1261 [23:08<08:36,  1.54s/it]



 74%|███████▎  | 927/1261 [23:09<08:34,  1.54s/it]



 74%|███████▎  | 928/1261 [23:11<08:32,  1.54s/it]



 74%|███████▎  | 929/1261 [23:12<08:34,  1.55s/it]



 74%|███████▍  | 930/1261 [23:14<08:33,  1.55s/it]



 74%|███████▍  | 931/1261 [23:16<08:31,  1.55s/it]



 74%|███████▍  | 932/1261 [23:17<08:27,  1.54s/it]



 74%|███████▍  | 933/1261 [23:19<08:19,  1.52s/it]



 74%|███████▍  | 934/1261 [23:20<08:15,  1.51s/it]



 74%|███████▍  | 935/1261 [23:22<08:12,  1.51s/it]



 74%|███████▍  | 936/1261 [23:23<08:07,  1.50s/it]



 74%|███████▍  | 937/1261 [23:25<08:08,  1.51s/it]



 74%|███████▍  | 938/1261 [23:26<08:08,  1.51s/it]



 74%|███████▍  | 939/1261 [23:28<08:09,  1.52s/it]



 75%|███████▍  | 940/1261 [23:29<08:08,  1.52s/it]



 75%|███████▍  | 941/1261 [23:31<08:08,  1.53s/it]



 75%|███████▍  | 942/1261 [23:32<08:08,  1.53s/it]



 75%|███████▍  | 943/1261 [23:34<08:07,  1.53s/it]



 75%|███████▍  | 944/1261 [23:35<08:04,  1.53s/it]



 75%|███████▍  | 945/1261 [23:37<08:03,  1.53s/it]



 75%|███████▌  | 946/1261 [23:38<08:03,  1.54s/it]



 75%|███████▌  | 947/1261 [23:40<08:02,  1.54s/it]



 75%|███████▌  | 948/1261 [23:41<07:58,  1.53s/it]



 75%|███████▌  | 949/1261 [23:43<07:55,  1.52s/it]



 75%|███████▌  | 950/1261 [23:45<07:55,  1.53s/it]



 75%|███████▌  | 951/1261 [23:46<07:54,  1.53s/it]



 75%|███████▌  | 952/1261 [23:48<07:51,  1.53s/it]



 76%|███████▌  | 953/1261 [23:49<07:50,  1.53s/it]



 76%|███████▌  | 954/1261 [23:51<07:49,  1.53s/it]



 76%|███████▌  | 955/1261 [23:52<07:48,  1.53s/it]



 76%|███████▌  | 956/1261 [23:54<07:46,  1.53s/it]



 76%|███████▌  | 957/1261 [23:55<07:47,  1.54s/it]



 76%|███████▌  | 958/1261 [23:57<07:44,  1.53s/it]



 76%|███████▌  | 959/1261 [23:58<07:40,  1.53s/it]



 76%|███████▌  | 960/1261 [24:00<07:39,  1.53s/it]



 76%|███████▌  | 961/1261 [24:01<07:36,  1.52s/it]



 76%|███████▋  | 962/1261 [24:03<07:35,  1.52s/it]



 76%|███████▋  | 963/1261 [24:04<07:35,  1.53s/it]



 76%|███████▋  | 964/1261 [24:06<07:31,  1.52s/it]



 77%|███████▋  | 965/1261 [24:07<07:30,  1.52s/it]



 77%|███████▋  | 966/1261 [24:09<07:29,  1.52s/it]



 77%|███████▋  | 967/1261 [24:10<07:28,  1.52s/it]



 77%|███████▋  | 968/1261 [24:12<07:32,  1.54s/it]



 77%|███████▋  | 969/1261 [24:14<07:31,  1.55s/it]



 77%|███████▋  | 970/1261 [24:15<07:30,  1.55s/it]



 77%|███████▋  | 971/1261 [24:17<07:28,  1.55s/it]



 77%|███████▋  | 972/1261 [24:18<07:25,  1.54s/it]



 77%|███████▋  | 973/1261 [24:20<07:24,  1.54s/it]



 77%|███████▋  | 974/1261 [24:21<07:21,  1.54s/it]



 77%|███████▋  | 975/1261 [24:23<07:20,  1.54s/it]



 77%|███████▋  | 976/1261 [24:24<07:17,  1.54s/it]



 77%|███████▋  | 977/1261 [24:26<07:15,  1.53s/it]



 78%|███████▊  | 978/1261 [24:27<07:15,  1.54s/it]



 78%|███████▊  | 979/1261 [24:29<07:15,  1.54s/it]



 78%|███████▊  | 980/1261 [24:31<07:13,  1.54s/it]



 78%|███████▊  | 981/1261 [24:32<07:11,  1.54s/it]



 78%|███████▊  | 982/1261 [24:34<07:10,  1.54s/it]



 78%|███████▊  | 983/1261 [24:35<07:10,  1.55s/it]



 78%|███████▊  | 984/1261 [24:37<07:07,  1.54s/it]



 78%|███████▊  | 985/1261 [24:38<07:05,  1.54s/it]



 78%|███████▊  | 986/1261 [24:40<07:03,  1.54s/it]



 78%|███████▊  | 987/1261 [24:41<07:00,  1.54s/it]



 78%|███████▊  | 988/1261 [24:43<06:58,  1.53s/it]



 78%|███████▊  | 989/1261 [24:44<06:56,  1.53s/it]



 79%|███████▊  | 990/1261 [24:46<06:56,  1.54s/it]



 79%|███████▊  | 991/1261 [24:47<06:54,  1.54s/it]



 79%|███████▊  | 992/1261 [24:49<06:53,  1.54s/it]



 79%|███████▊  | 993/1261 [24:51<06:53,  1.54s/it]



 79%|███████▉  | 994/1261 [24:52<06:52,  1.54s/it]



 79%|███████▉  | 995/1261 [24:54<06:52,  1.55s/it]



 79%|███████▉  | 996/1261 [24:55<06:52,  1.56s/it]



 79%|███████▉  | 997/1261 [24:57<06:53,  1.56s/it]



 79%|███████▉  | 998/1261 [24:58<06:50,  1.56s/it]



 79%|███████▉  | 999/1261 [25:00<06:47,  1.55s/it]



 79%|███████▉  | 1000/1261 [25:01<06:46,  1.56s/it]



 79%|███████▉  | 1001/1261 [25:03<06:44,  1.56s/it]



 79%|███████▉  | 1002/1261 [25:05<06:44,  1.56s/it]



 80%|███████▉  | 1003/1261 [25:06<06:45,  1.57s/it]



 80%|███████▉  | 1004/1261 [25:08<06:45,  1.58s/it]



 80%|███████▉  | 1005/1261 [25:09<06:41,  1.57s/it]



 80%|███████▉  | 1006/1261 [25:11<06:38,  1.56s/it]



 80%|███████▉  | 1007/1261 [25:12<06:35,  1.56s/it]



 80%|███████▉  | 1008/1261 [25:14<06:32,  1.55s/it]



 80%|████████  | 1009/1261 [25:16<06:30,  1.55s/it]



 80%|████████  | 1010/1261 [25:17<06:30,  1.55s/it]



 80%|████████  | 1011/1261 [25:19<06:26,  1.55s/it]



 80%|████████  | 1012/1261 [25:20<06:23,  1.54s/it]



 80%|████████  | 1013/1261 [25:22<06:20,  1.53s/it]



 80%|████████  | 1014/1261 [25:23<06:19,  1.54s/it]



 80%|████████  | 1015/1261 [25:25<06:18,  1.54s/it]



 81%|████████  | 1016/1261 [25:26<06:18,  1.54s/it]



 81%|████████  | 1017/1261 [25:28<06:16,  1.54s/it]



 81%|████████  | 1018/1261 [25:29<06:13,  1.54s/it]



 81%|████████  | 1019/1261 [25:31<06:10,  1.53s/it]



 81%|████████  | 1020/1261 [25:32<06:08,  1.53s/it]



 81%|████████  | 1021/1261 [25:34<06:07,  1.53s/it]



 81%|████████  | 1022/1261 [25:35<06:04,  1.53s/it]



 81%|████████  | 1023/1261 [25:37<06:04,  1.53s/it]



 81%|████████  | 1024/1261 [25:39<06:03,  1.53s/it]



 81%|████████▏ | 1025/1261 [25:40<06:00,  1.53s/it]



 81%|████████▏ | 1026/1261 [25:42<05:57,  1.52s/it]



 81%|████████▏ | 1027/1261 [25:43<05:56,  1.52s/it]



 82%|████████▏ | 1028/1261 [25:45<05:55,  1.53s/it]



 82%|████████▏ | 1029/1261 [25:46<05:55,  1.53s/it]



 82%|████████▏ | 1030/1261 [25:48<05:53,  1.53s/it]



 82%|████████▏ | 1031/1261 [25:49<05:50,  1.53s/it]



 82%|████████▏ | 1032/1261 [25:51<05:49,  1.53s/it]



 82%|████████▏ | 1033/1261 [25:52<05:48,  1.53s/it]



 82%|████████▏ | 1034/1261 [25:54<05:46,  1.53s/it]



 82%|████████▏ | 1035/1261 [25:55<05:47,  1.54s/it]



 82%|████████▏ | 1036/1261 [25:57<05:45,  1.54s/it]



 82%|████████▏ | 1037/1261 [25:58<05:43,  1.53s/it]



 82%|████████▏ | 1038/1261 [26:00<05:41,  1.53s/it]



 82%|████████▏ | 1039/1261 [26:01<05:40,  1.54s/it]



 82%|████████▏ | 1040/1261 [26:03<05:38,  1.53s/it]



 83%|████████▎ | 1041/1261 [26:05<05:36,  1.53s/it]



 83%|████████▎ | 1042/1261 [26:06<05:35,  1.53s/it]



 83%|████████▎ | 1043/1261 [26:08<05:35,  1.54s/it]



 83%|████████▎ | 1044/1261 [26:09<05:33,  1.54s/it]



 83%|████████▎ | 1045/1261 [26:11<05:31,  1.53s/it]



 83%|████████▎ | 1046/1261 [26:12<05:30,  1.54s/it]



 83%|████████▎ | 1047/1261 [26:14<05:28,  1.53s/it]



 83%|████████▎ | 1048/1261 [26:15<05:27,  1.54s/it]



 83%|████████▎ | 1049/1261 [26:17<05:26,  1.54s/it]



 83%|████████▎ | 1050/1261 [26:18<05:24,  1.54s/it]



 83%|████████▎ | 1051/1261 [26:20<05:22,  1.53s/it]



 83%|████████▎ | 1052/1261 [26:21<05:20,  1.54s/it]



 84%|████████▎ | 1053/1261 [26:23<05:19,  1.54s/it]



 84%|████████▎ | 1054/1261 [26:25<05:16,  1.53s/it]



 84%|████████▎ | 1055/1261 [26:26<05:15,  1.53s/it]



 84%|████████▎ | 1056/1261 [26:28<05:12,  1.53s/it]



 84%|████████▍ | 1057/1261 [26:29<05:11,  1.53s/it]



 84%|████████▍ | 1058/1261 [26:31<05:11,  1.53s/it]



 84%|████████▍ | 1059/1261 [26:32<05:10,  1.54s/it]



 84%|████████▍ | 1060/1261 [26:34<05:08,  1.54s/it]



 84%|████████▍ | 1061/1261 [26:35<05:05,  1.53s/it]



 84%|████████▍ | 1062/1261 [26:37<05:03,  1.52s/it]



 84%|████████▍ | 1063/1261 [26:38<05:02,  1.53s/it]



 84%|████████▍ | 1064/1261 [26:40<05:00,  1.53s/it]



 84%|████████▍ | 1065/1261 [26:41<04:59,  1.53s/it]



 85%|████████▍ | 1066/1261 [26:43<04:59,  1.53s/it]



 85%|████████▍ | 1067/1261 [26:44<04:57,  1.53s/it]



 85%|████████▍ | 1068/1261 [26:46<04:56,  1.53s/it]



 85%|████████▍ | 1069/1261 [26:47<04:54,  1.53s/it]



 85%|████████▍ | 1070/1261 [26:49<04:53,  1.54s/it]



 85%|████████▍ | 1071/1261 [26:51<04:52,  1.54s/it]



 85%|████████▌ | 1072/1261 [26:52<04:50,  1.54s/it]



 85%|████████▌ | 1073/1261 [26:54<04:49,  1.54s/it]



 85%|████████▌ | 1074/1261 [26:55<04:47,  1.54s/it]



 85%|████████▌ | 1075/1261 [26:57<04:45,  1.54s/it]



 85%|████████▌ | 1076/1261 [26:58<04:44,  1.54s/it]



 85%|████████▌ | 1077/1261 [27:00<04:43,  1.54s/it]



 85%|████████▌ | 1078/1261 [27:01<04:42,  1.55s/it]



 86%|████████▌ | 1079/1261 [27:03<04:41,  1.54s/it]



 86%|████████▌ | 1080/1261 [27:04<04:37,  1.54s/it]



 86%|████████▌ | 1081/1261 [27:06<04:35,  1.53s/it]



 86%|████████▌ | 1082/1261 [27:07<04:35,  1.54s/it]



 86%|████████▌ | 1083/1261 [27:09<04:34,  1.54s/it]



 86%|████████▌ | 1084/1261 [27:11<04:33,  1.54s/it]



 86%|████████▌ | 1085/1261 [27:12<04:30,  1.54s/it]



 86%|████████▌ | 1086/1261 [27:14<04:27,  1.53s/it]



 86%|████████▌ | 1087/1261 [27:15<04:27,  1.54s/it]



 86%|████████▋ | 1088/1261 [27:17<04:26,  1.54s/it]



 86%|████████▋ | 1089/1261 [27:18<04:24,  1.54s/it]



 86%|████████▋ | 1090/1261 [27:20<04:22,  1.54s/it]



 87%|████████▋ | 1091/1261 [27:21<04:21,  1.54s/it]



 87%|████████▋ | 1092/1261 [27:23<04:19,  1.53s/it]



 87%|████████▋ | 1093/1261 [27:24<04:17,  1.53s/it]



 87%|████████▋ | 1094/1261 [27:26<04:14,  1.53s/it]



 87%|████████▋ | 1095/1261 [27:27<04:13,  1.52s/it]



 87%|████████▋ | 1096/1261 [27:29<04:11,  1.53s/it]



 87%|████████▋ | 1097/1261 [27:30<04:09,  1.52s/it]



 87%|████████▋ | 1098/1261 [27:32<04:08,  1.52s/it]



 87%|████████▋ | 1099/1261 [27:34<04:07,  1.53s/it]



 87%|████████▋ | 1100/1261 [27:35<04:06,  1.53s/it]



 87%|████████▋ | 1101/1261 [27:37<04:04,  1.53s/it]



 87%|████████▋ | 1102/1261 [27:38<04:02,  1.53s/it]



 87%|████████▋ | 1103/1261 [27:40<04:01,  1.53s/it]



 88%|████████▊ | 1104/1261 [27:41<04:00,  1.53s/it]



 88%|████████▊ | 1105/1261 [27:43<03:58,  1.53s/it]



 88%|████████▊ | 1106/1261 [27:44<03:57,  1.53s/it]



 88%|████████▊ | 1107/1261 [27:46<03:56,  1.53s/it]



 88%|████████▊ | 1108/1261 [27:47<03:54,  1.53s/it]



 88%|████████▊ | 1109/1261 [27:49<03:52,  1.53s/it]



 88%|████████▊ | 1110/1261 [27:50<03:50,  1.53s/it]



 88%|████████▊ | 1111/1261 [27:52<03:48,  1.53s/it]



 88%|████████▊ | 1112/1261 [27:53<03:48,  1.54s/it]



 88%|████████▊ | 1113/1261 [27:55<03:47,  1.54s/it]



 88%|████████▊ | 1114/1261 [27:56<03:45,  1.53s/it]



 88%|████████▊ | 1115/1261 [27:58<03:43,  1.53s/it]



 89%|████████▊ | 1116/1261 [28:00<03:42,  1.53s/it]



 89%|████████▊ | 1117/1261 [28:01<03:40,  1.53s/it]



 89%|████████▊ | 1118/1261 [28:03<03:38,  1.53s/it]



 89%|████████▊ | 1119/1261 [28:04<03:37,  1.53s/it]



 89%|████████▉ | 1120/1261 [28:06<03:34,  1.52s/it]



 89%|████████▉ | 1121/1261 [28:07<03:33,  1.52s/it]



 89%|████████▉ | 1122/1261 [28:09<03:31,  1.52s/it]



 89%|████████▉ | 1123/1261 [28:10<03:29,  1.52s/it]



 89%|████████▉ | 1124/1261 [28:12<03:28,  1.52s/it]



 89%|████████▉ | 1125/1261 [28:13<03:29,  1.54s/it]



 89%|████████▉ | 1126/1261 [28:15<03:28,  1.55s/it]



 89%|████████▉ | 1127/1261 [28:16<03:26,  1.54s/it]



 89%|████████▉ | 1128/1261 [28:18<03:24,  1.54s/it]



 90%|████████▉ | 1129/1261 [28:19<03:23,  1.54s/it]



 90%|████████▉ | 1130/1261 [28:21<03:22,  1.55s/it]



 90%|████████▉ | 1131/1261 [28:23<03:22,  1.56s/it]



 90%|████████▉ | 1132/1261 [28:24<03:19,  1.55s/it]



 90%|████████▉ | 1133/1261 [28:26<03:17,  1.54s/it]



 90%|████████▉ | 1134/1261 [28:27<03:16,  1.55s/it]



 90%|█████████ | 1135/1261 [28:29<03:14,  1.54s/it]



 90%|█████████ | 1136/1261 [28:30<03:11,  1.54s/it]



 90%|█████████ | 1137/1261 [28:32<03:09,  1.53s/it]



 90%|█████████ | 1138/1261 [28:33<03:06,  1.52s/it]



 90%|█████████ | 1139/1261 [28:35<03:05,  1.52s/it]



 90%|█████████ | 1140/1261 [28:36<03:04,  1.53s/it]



 90%|█████████ | 1141/1261 [28:38<03:04,  1.53s/it]



 91%|█████████ | 1142/1261 [28:39<03:03,  1.54s/it]



 91%|█████████ | 1143/1261 [28:41<03:02,  1.54s/it]



 91%|█████████ | 1144/1261 [28:43<03:00,  1.55s/it]



 91%|█████████ | 1145/1261 [28:44<03:00,  1.55s/it]



 91%|█████████ | 1146/1261 [28:46<02:58,  1.55s/it]



 91%|█████████ | 1147/1261 [28:47<02:55,  1.54s/it]



 91%|█████████ | 1148/1261 [28:49<02:53,  1.54s/it]



 91%|█████████ | 1149/1261 [28:50<02:50,  1.53s/it]



 91%|█████████ | 1150/1261 [28:52<02:49,  1.52s/it]



 91%|█████████▏| 1151/1261 [28:53<02:48,  1.53s/it]



 91%|█████████▏| 1152/1261 [28:55<02:46,  1.53s/it]



 91%|█████████▏| 1153/1261 [28:56<02:44,  1.52s/it]



 92%|█████████▏| 1154/1261 [28:58<02:42,  1.52s/it]



 92%|█████████▏| 1155/1261 [28:59<02:40,  1.52s/it]



 92%|█████████▏| 1156/1261 [29:01<02:41,  1.53s/it]



 92%|█████████▏| 1157/1261 [29:02<02:40,  1.54s/it]



 92%|█████████▏| 1158/1261 [29:04<02:38,  1.54s/it]



 92%|█████████▏| 1159/1261 [29:06<02:36,  1.54s/it]



 92%|█████████▏| 1160/1261 [29:07<02:35,  1.54s/it]



 92%|█████████▏| 1161/1261 [29:09<02:33,  1.53s/it]



 92%|█████████▏| 1162/1261 [29:10<02:31,  1.53s/it]



 92%|█████████▏| 1163/1261 [29:12<02:30,  1.54s/it]



 92%|█████████▏| 1164/1261 [29:13<02:28,  1.53s/it]



 92%|█████████▏| 1165/1261 [29:15<02:26,  1.53s/it]



 92%|█████████▏| 1166/1261 [29:16<02:24,  1.52s/it]



 93%|█████████▎| 1167/1261 [29:18<02:22,  1.52s/it]



 93%|█████████▎| 1168/1261 [29:19<02:21,  1.53s/it]



 93%|█████████▎| 1169/1261 [29:21<02:20,  1.52s/it]



 93%|█████████▎| 1170/1261 [29:22<02:19,  1.53s/it]



 93%|█████████▎| 1171/1261 [29:24<02:18,  1.53s/it]



 93%|█████████▎| 1172/1261 [29:25<02:16,  1.54s/it]



 93%|█████████▎| 1173/1261 [29:27<02:15,  1.54s/it]



 93%|█████████▎| 1174/1261 [29:29<02:14,  1.54s/it]



 93%|█████████▎| 1175/1261 [29:30<02:13,  1.55s/it]



 93%|█████████▎| 1176/1261 [29:32<02:11,  1.55s/it]



 93%|█████████▎| 1177/1261 [29:33<02:09,  1.54s/it]



 93%|█████████▎| 1178/1261 [29:35<02:07,  1.54s/it]



 93%|█████████▎| 1179/1261 [29:36<02:06,  1.54s/it]



 94%|█████████▎| 1180/1261 [29:38<02:04,  1.54s/it]



 94%|█████████▎| 1181/1261 [29:39<02:03,  1.54s/it]



 94%|█████████▎| 1182/1261 [29:41<02:02,  1.55s/it]



 94%|█████████▍| 1183/1261 [29:42<02:00,  1.55s/it]



 94%|█████████▍| 1184/1261 [29:44<01:58,  1.54s/it]



 94%|█████████▍| 1185/1261 [29:45<01:56,  1.53s/it]



 94%|█████████▍| 1186/1261 [29:47<01:55,  1.54s/it]



 94%|█████████▍| 1187/1261 [29:49<01:53,  1.54s/it]



 94%|█████████▍| 1188/1261 [29:50<01:52,  1.55s/it]



 94%|█████████▍| 1189/1261 [29:52<01:51,  1.54s/it]



 94%|█████████▍| 1190/1261 [29:53<01:50,  1.55s/it]



 94%|█████████▍| 1191/1261 [29:55<01:48,  1.55s/it]



 95%|█████████▍| 1192/1261 [29:56<01:46,  1.55s/it]



 95%|█████████▍| 1193/1261 [29:58<01:44,  1.54s/it]



 95%|█████████▍| 1194/1261 [29:59<01:43,  1.54s/it]



 95%|█████████▍| 1195/1261 [30:01<01:42,  1.55s/it]



 95%|█████████▍| 1196/1261 [30:03<01:40,  1.54s/it]



 95%|█████████▍| 1197/1261 [30:04<01:38,  1.55s/it]



 95%|█████████▌| 1198/1261 [30:06<01:37,  1.54s/it]



 95%|█████████▌| 1199/1261 [30:07<01:36,  1.55s/it]



 95%|█████████▌| 1200/1261 [30:09<01:34,  1.55s/it]



 95%|█████████▌| 1201/1261 [30:10<01:32,  1.55s/it]



 95%|█████████▌| 1202/1261 [30:12<01:31,  1.54s/it]



 95%|█████████▌| 1203/1261 [30:13<01:29,  1.54s/it]



 95%|█████████▌| 1204/1261 [30:15<01:27,  1.53s/it]



 96%|█████████▌| 1205/1261 [30:16<01:25,  1.52s/it]



 96%|█████████▌| 1206/1261 [30:18<01:24,  1.53s/it]



 96%|█████████▌| 1207/1261 [30:19<01:22,  1.53s/it]



 96%|█████████▌| 1208/1261 [30:21<01:20,  1.53s/it]



 96%|█████████▌| 1209/1261 [30:22<01:19,  1.53s/it]



 96%|█████████▌| 1210/1261 [30:24<01:18,  1.54s/it]



 96%|█████████▌| 1211/1261 [30:26<01:17,  1.55s/it]



 96%|█████████▌| 1212/1261 [30:27<01:15,  1.54s/it]



 96%|█████████▌| 1213/1261 [30:29<01:14,  1.55s/it]



 96%|█████████▋| 1214/1261 [30:30<01:12,  1.54s/it]



 96%|█████████▋| 1215/1261 [30:32<01:11,  1.55s/it]



 96%|█████████▋| 1216/1261 [30:33<01:09,  1.54s/it]



 97%|█████████▋| 1217/1261 [30:35<01:08,  1.55s/it]



 97%|█████████▋| 1218/1261 [30:36<01:06,  1.54s/it]



 97%|█████████▋| 1219/1261 [30:38<01:04,  1.54s/it]



 97%|█████████▋| 1220/1261 [30:39<01:03,  1.54s/it]



 97%|█████████▋| 1221/1261 [30:41<01:01,  1.54s/it]



 97%|█████████▋| 1222/1261 [30:43<01:00,  1.55s/it]



 97%|█████████▋| 1223/1261 [30:44<00:58,  1.55s/it]



 97%|█████████▋| 1224/1261 [30:46<00:57,  1.54s/it]



 97%|█████████▋| 1225/1261 [30:47<00:55,  1.54s/it]



 97%|█████████▋| 1226/1261 [30:49<00:53,  1.54s/it]



 97%|█████████▋| 1227/1261 [30:50<00:52,  1.54s/it]



 97%|█████████▋| 1228/1261 [30:52<00:50,  1.53s/it]



 97%|█████████▋| 1229/1261 [30:53<00:49,  1.54s/it]



 98%|█████████▊| 1230/1261 [30:55<00:47,  1.53s/it]



 98%|█████████▊| 1231/1261 [30:56<00:46,  1.53s/it]



 98%|█████████▊| 1232/1261 [30:58<00:44,  1.53s/it]



 98%|█████████▊| 1233/1261 [30:59<00:42,  1.52s/it]



 98%|█████████▊| 1234/1261 [31:01<00:41,  1.53s/it]



 98%|█████████▊| 1235/1261 [31:03<00:40,  1.54s/it]



 98%|█████████▊| 1236/1261 [31:04<00:38,  1.54s/it]



 98%|█████████▊| 1237/1261 [31:06<00:37,  1.54s/it]



 98%|█████████▊| 1238/1261 [31:07<00:35,  1.54s/it]



 98%|█████████▊| 1239/1261 [31:09<00:33,  1.53s/it]



 98%|█████████▊| 1240/1261 [31:10<00:32,  1.53s/it]



 98%|█████████▊| 1241/1261 [31:12<00:30,  1.54s/it]



 98%|█████████▊| 1242/1261 [31:13<00:29,  1.54s/it]



 99%|█████████▊| 1243/1261 [31:15<00:27,  1.54s/it]



 99%|█████████▊| 1244/1261 [31:16<00:26,  1.54s/it]



 99%|█████████▊| 1245/1261 [31:18<00:24,  1.54s/it]



 99%|█████████▉| 1246/1261 [31:19<00:23,  1.54s/it]



 99%|█████████▉| 1247/1261 [31:21<00:21,  1.54s/it]



 99%|█████████▉| 1248/1261 [31:23<00:20,  1.55s/it]



 99%|█████████▉| 1249/1261 [31:24<00:18,  1.55s/it]



 99%|█████████▉| 1250/1261 [31:26<00:17,  1.55s/it]



 99%|█████████▉| 1251/1261 [31:27<00:15,  1.54s/it]



 99%|█████████▉| 1252/1261 [31:29<00:13,  1.54s/it]



 99%|█████████▉| 1253/1261 [31:30<00:12,  1.54s/it]



 99%|█████████▉| 1254/1261 [31:32<00:10,  1.54s/it]



100%|█████████▉| 1255/1261 [31:33<00:09,  1.53s/it]



100%|█████████▉| 1256/1261 [31:35<00:07,  1.55s/it]



100%|█████████▉| 1257/1261 [31:36<00:06,  1.54s/it]



100%|█████████▉| 1258/1261 [31:38<00:04,  1.54s/it]



100%|█████████▉| 1259/1261 [31:40<00:03,  1.55s/it]



100%|█████████▉| 1260/1261 [31:41<00:01,  1.54s/it]



[MoviePy] Done.
[MoviePy] >>>> Video ready: project_video_result.mp4 

In [ ]: